源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Matrix的set,pre,post调用顺序详解

  • 时间:2022-11-28 10:02 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Matrix的set,pre,post调用顺序详解
Matrix调用一系列set,pre,post方法时,可视为将这些方法插入到一个队列。当然,按照队列中从头至尾的顺序调用执行。 其中pre表示在队头插入一个方法,post表示在队尾插入一个方法。而set表示把当前队列清空,并且总是位于队列的最中间位置。当执行了一次set后:pre方法总是插入到set前部的队列的最前面,post方法总是插入到set后部的队列的最后面。 [b]例一:[/b]
Matrix m = new Matrix();
m.setRotate(45); 
m.setTranslate(80, 80);

只有m.setTranslate(80, 80)有效,因为m.setRotate(45);被清除. [b]例子二:[/b]
Matrix m = new Matrix();
m.setTranslate(80, 80);
m.postRotate(45);

先执行m.setTranslate(80, 80);后执行m.postRotate(45); [b]例子三:[/b]
Matrix m = new Matrix();
m.setTranslate(80, 80);
m.preRotate(45);

先执行m.setTranslate(80, 80);后执行m.preRotate(45); [b]例子四:[/b]
Matrix m = new Matrix();
m.preScale(2f,2f);  
m.preTranslate(50f, 20f);  
m.postScale(0.2f, 0.5f);  
m.postTranslate(20f, 20f); 

[b]执行顺序:[/b]m.preTranslate(50f, 20f)-->m.preScale(2f,2f)-->m.postScale(0.2f, 0.5f)-->m.postTranslate(20f, 20f) [b]注意:[/b]m.preTranslate(50f, 20f)比m.preScale(2f,2f)先执行,因为它查到了队列的最前端. [b]例子五:[/b]
Matrix m = new Matrix();
m.postTranslate(20, 20);  
m.preScale(0.2f, 0.5f);
m.setScale(0.8f, 0.8f);  
m.postScale(3f, 3f);
m.preTranslate(0.5f, 0.5f);

[b]执行顺序:[/b]m.preTranslate(0.5f, 0.5f)-->m.setScale(0.8f, 0.8f)-->m.postScale(3f, 3f) [b]注意:[/b]m.setScale(0.8f, 0.8f)清除了前面的m.postTranslate(20, 20)和m.preScale(0.2f, 0.5f); 以上这篇Matrix的set,pre,post调用顺序详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部