8.7.8 多次变形
来源:互联网 发布:激战2初始人女捏脸数据 编辑:程序博客网 时间:2024/06/10 07:33
本例还可以通过应用二次变形矩阵来实现。Matrix类提供concat()方法。该方法可以实现多次变形矩阵的应用。
concat()方法的函数说明为:
方法定义:
public function concat(m:Matrix):void
作用:
连接(Concatenates)一个矩阵到当前矩阵,其效果等于两次变形的效果。在数学角度解释,这种连接等同于两个矩阵相乘。
备注:
1该方法无返回值,将直接修改当前矩阵。
2如果要避免修改,请使用clone方法复制当前矩阵。
参数:
m:Matrix — 用于同当前矩阵连接的一个矩阵
使用concat()方法将两个变形矩阵相乘,在此过程中,tx和ty会参与运算,所以不必在代码中自行设置。通过创建一个处理伸缩映射的变形矩阵,并将它同显示对象的矩阵副本相乘,得到的矩阵将是同直接使用scale()方法等效的。
需要注意的是,该方法直接修改当前矩阵,所以如下的代码是不能达到预期的:
function flip_V_2():void
{
flipstep+=0.1;
flipMatrix.d=Math.sin(flipstep);
objMatrix.concat(flipMatrix);
flipobjbox.flipObj.transform.matrix=objMatrix;
}
因为在这段代码执行时,每次objMatrix都会被改变,每次执行都是在上次执行的结果上处理。正确的写法应该使用clone()方法,创建objMatrix的副本:
……
var flipMatrix:Matrix=new Matrix();
……
//函数主体
function flip_V_3():void{
flipstep+=0.1;
flipMatrix.d=Math.sin(flipstep);
trace("flipmatrix:"+flipMatrix.toString());
var tempMatrix:Matrix=objMatrix.clone();
trace("OriginalMatrix:"+tempMatrix.toString());
tempMatrix.concat(flipMatrix);
trace("Concat result matrix:"+tempMatrix.toString());
flipobjbox.flipObj.transform.matrix=tempMatrix;
}
……
function transtimerHandler(event:TimerEvent):void {
//动画代码编写入口
//flip_V_0();
//flip_V_1();
//flip_V_2();
flip_V_3();
}
执行这段程序,动画的显示结果符合预期。
- 8.7.8 多次变形
- 8.7 旋转变形
- 变形
- 变形
- 变形
- 变形
- 变形
- 8.6.8 矩阵变形方法
- KZ笔记8:多次加速下高质量的加速
- 多次拷贝
- 多次Autocomple
- 左程云直播8.7-互为变形词、旋转词、manacher算法
- 形容词变形
- 变形课
- 变形算法
- 随机变形
- 随机变形
- 变形课
- 文博创造的大漠汉语编程
- 8.7.6 自定义伸缩方法
- 最近看到的一些比较有趣的javascript开源项目
- 8.7.7 分析映射逻辑
- asterisk学习资料
- 8.7.8 多次变形
- 8.7.9 位移向量运算
- 8.7.10 改变内建行为
- typeof用法
- 8.8 小结
- 第十二章 使用外部数据
- LumaQQ源码,注解.下载的用户看一下.
- JS 精通,需要精通哪一些(欢迎大家讨论)
- Java 编辑器使用笔记