位移向量的计算原理不仅适用于伸缩映射。在旋转和斜切等变换中,使用同样的计算原理。可以利用这个特性,改变Matrix类内建方法的行为。
方法rotate()的默认行为,是围绕显示对象父容器的坐标原点旋转。前文曾演示了通过translate()方法,将显示对象中心移动到父容器原点。这样做是为了得到围绕中心旋转的执行结果。通过学习,现在读者已经具备充足的矩阵知识,理解了变形中位移向量tx和ty的作用。可以用更简洁的方法,改变rotate()方法的行为。
打开例8-9的代码编辑器,输入以下代码:
//默认的方法行为
function rotate_1():void
{
objMatrix.rotate(flipstep/100);
flipobjbox.flipObj.transform.matrix=objMatrix;
}
//修改方法的行为
function rotate_2():void
{
objMatrix.ty-=80;
objMatrix.rotate(flipstep/100);
objMatrix.ty+=80;
flipobjbox.flipObj.transform.matrix=objMatrix;
}
在主程序中调用执行rotate_2()函数:
rotate_2();
编译并执行这段代码,程序的运行效果如图所示:
这段代码中,rotate_1()演示了默认情况下的Matrix.rotate()方法,其行为早已为读者所熟悉,不再赘述。在rotate_2()中,代码通过修改矩阵的ty值,规避了rotate()方法执行时的向量运算,达到修改方法执行行为的目的。
在程序的输出画面,可观察到显示对象围绕其中心顺时针旋转。