1

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

4

1 回答 1

0

旋转是相对于父对象的,当您旋转父对象时,它将改变子对象的参考框架。当您仅围绕一个轴旋转时,这并不重要,但是当您围绕两个轴旋转时会有所不同。要撤消旋转,您必须以与应用它们相反的顺序撤消所有旋转。

用一本书或你的手机试试,先在一个轴上旋转 90 度,然后再旋转一秒钟。你不能回到你开始的地方,你将永远参与第三轴。

于 2011-01-17T19:59:59.960 回答