您好我正在制作动作脚本3,我必须使用平移旋转缩放到动画片段。我有旋转和缩放工作正常,但当我处理翻译时,我发现转换将对象移动到原点之外的问题,所以当我想旋转对象时,对象不再按预期旋转。实现翻译的最佳方式是什么,以便在翻译原点时翻译动画片段....
最后一件事.. movieclip.scale和movieclip.transform.scale函数有什么区别?如果我使用movieclip.scale,我是否仍然可以从该movieclip.scale获取movieclip.transform.matrix
答案 0 :(得分:2)
所有矩阵变换(包括旋转和缩放)都相对于剪辑所在的坐标系的原点生效。如果要围绕任何其他点旋转或缩放,则应将剪辑平移到该点,进行变换并平移。换句话说,这个:
clip.rotation = 30;
做同样的事情:
var tx:Number = clip.x;
var ty:Number = clip.y;
var m:Matrix = clip.transform.matrix;
m.translate( -tx, -ty );
m.rotate(30*Math.PI/180);
m.translate( tx, ty );
clip.transform.matrix = m;
它与缩放转换的工作方式完全相同。
对于你的另一个问题,MovieClip.scaleX / Y和Matrix.scale之间的区别与使用旋转完全相同 - 你可以采用任何一种方式应用你的旋转,但是使用内置的MC属性它们会相对于剪辑生效注册点,Matrix函数是相对于原点的。如果剪辑的注册点位于(0,0),则它们的工作方式相同。