2010-11-09 54 views
1

我有2的DisplayObject,一个含有其它类似代码如下:的Actionscript旋转从1个轴线

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父容器”旋转是什么?

+0

我很确定这里的问题与矩阵的乘法有关,这可能非常棘手。希望有更广泛的3D知识的人能够给你一个明确的答案。你是否无法将图像作为位于旋转子画面上方的独立显示对象加载? – TheDarkIn1978 2010-11-09 04:53:54

+0

我的实际问题太复杂,无法解释或放下示例代码。但是这只是导致错误的一点。我想了解它是如何彻底运作的 – ohm 2010-11-09 11:07:39

回答

0

旋转是相对于父项,当您旋转父对象时,它将更改该子项的引用框。当你只围绕一个轴旋转时,这并不重要,但当你围绕两个轴旋转时会产生变化。要撤消旋转,您必须按照与其应用相反的顺序撤消所有旋转。

用一本书或您的手机在一个轴上旋转90度,然后在第二个轴上旋转90度来尝试。你不能回到你开始的地方,你会一直参与第三轴。