两个轴上的Actionscript旋转不同于1轴

时间:2010-11-09 03:39:42

标签: actionscript-3 actionscript displayobject

我有2个DisplayObject,一个包含另一个,如下面的代码:

var sprite1:Sprite = new Sprite();

sprite1.addChild(loader1); // assume that I have load picture on to loader1

loader1.rotationZ = 30;

sprite1.rotationZ = -30; 如果我运行上面的代码,loader1上的图像看起来就像它根本没有旋转一样,因为它的容器以相反的方向旋转。这是正确的,正如我的预期。

但是,如果我对代码进行多轴旋转:

loader1.rotationZ = 30;

loader1.rotationY = 50;

sprite1.rotationZ = -30;

sprite1.rotationY = -50;

现在,loader1将以不同的角度旋转。我的问题是,为什么它不相互抵消? 请注意,loader1和sprite1的x,y,z位置都是0,0,0。无论旋转X,Y还是Z,都会出现此问题。如果您有1个轴,则可以正常工作。 2轴,它不会。

我发布了这个示例代码,因为我试图了解Flash如何在3D中旋转。在AS3文档中,它声称它围绕其“3D父容器”旋转这是什么?

1 个答案:

答案 0 :(得分:0)

旋转相对于父级,当您旋转父对象时,它将更改子级的引用框架。当你只围绕一个轴旋转时这没关系,但是当你绕两个轴旋转时会有所不同。要撤消旋转,您必须按照它们应用的相反顺序撤消所有旋转。

尝试使用书籍或手机,在一个轴上旋转90度,然后再旋转一秒。你无法回到你开始的地方,你将始终参与第3轴。