2

嗨,我正在研究动作脚本 3,我必须使用平移旋转缩放到影片剪辑。我的旋转和缩放工作正常,但是当我处理平移时,我发现平移会将对象移动到原点之外的问题,所以当我想旋转对象时,对象不再按预期旋转。实现翻译的最佳方法是什么,以便在翻译原点的同时翻译电影剪辑......

最后一件事..movi​​eclip.scale 和movieclip.transform.scale 函数有什么区别?如果我使用movieclip.scale,我还能从那个movieclip.scale 中获取movieclip.transform.matrix吗

4

1 回答 1

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 属性,它们相对于剪辑的注册点生效,并且矩阵函数是相对于原点的。如果剪辑的注册点位于 (0,0),则它们的工作方式相同。

于 2009-06-19T12:15:36.603 回答