利用Matrix类内建的scale()方法,可以快速实现一个物体的伸缩和映射。scale()方法的官方函数说明为:
Matrix.scale()
scale ()方法
public function scale(sx:Number, sy:Number):void
Player version: Flash Player 9
作用:
对矩阵对象应用缩放变形。在x轴将乘以sx,同时在y轴乘以sy。
参数:
sx:Number — x轴方向的倍数
sy:Number — y轴方向的倍数
当sx或者sy被设置为负值时,显示对象将被在反方向拉伸。利用这一点实现显示对象的映射。
(1)新建AS3项目例8-9,舞台大小550×400,帧率20。在舞台上建立空MovieClip对象flipobjbox,x=275,y=200,在flipobjbox内部,建立矩形MovieClip子对象flipObj,宽100,高60,x=-50,y=50。依照图布置:
其对象关系请参考图:
在代码编辑器中,输入以下代码:
var transtimer:Timer = new Timer(50, 150);
transtimer.addEventListener("timer", transtimerHandler);
transtimer.addEventListener("timerComplete", transComplete);
//拷贝matrix
var objMatrix:Matrix=flipobjbox.flipObj.transform.matrix;
var flipstep:Number=Math.PI/2;
//启动定时器
transtimer.start();
//实现反转
function flip_V_0():void
{
flipstep+=0.1;
var temp:Matrix=objMatrix.clone();
temp.scale(1,Math.sin(flipstep));
flipobjbox.flipObj.transform.matrix=temp;
}
//定时器触发响应
function transtimerHandler(event:TimerEvent):void
{
flip_V_0();//调用,内建反转
}
//重设定时器
function transComplete(event:TimerEvent):void
{
transtimer.reset();
transtimer.start();
}
运行此程序,显示对象flipObj围绕水平中轴线伸缩映射,其形态如同在三维空间的旋转。执行效果如图所示: