Wil*_*ill 3 flash 3d haxe actionscript-3
我有一个2D图像,我想用真正的3D绘制,并围绕它的中心旋转.
我正在使用Actionscript 3代码(实际上是Haxe,没有IDE),我正在努力通过实验发现这些值.
我有一个DisplayObject.如果我使用rotateZ = 45,物体围绕它的左上角而不是中心旋转; 更复杂的Display.transform.matrix事情,如同rotate(Math.PI/4)工作方式.如何围绕DisplayObject的XY中心在Z轴上旋转?
那么我如何让观点发挥作用呢?透视是相对于父级还是旋转后的对象?
我在DisplayObject实例上使用什么旋转和位置?透视变换的值是什么,以及我应用它们的对象是什么?
一种非常常见的方法是使用一个透视DisplayObjectContainer,将您的实际平面添加到该容器中,并将其偏离中心.然后你实际旋转容器.
var pivot : DisplayObjectContainer;
// plane is a display object (e.g. Sprite) that has been created previuosly
// and contains your 2D image.
plane.x = -plane.width/2;
plane.y = -plane.height/2;
pivot.addChild(plane);
pivot.rotationY = 45;
Run Code Online (Sandbox Code Playgroud)
这里,平面放在名为pivot的容器内,并偏移其宽度和高度的一半.这意味着平面显示对象的中心将与容器的配准点(原点)对齐.现在围绕原点旋转容器(枢轴)将使其所有子项(包括平面)围绕同一点旋转.
这通常比矩阵变换更容易使用.特别是因为3D矩阵很容易难以理解,除非你很熟悉数学.
此外,在重置矩阵之前,只修改plane.transform.matrix3D矩阵对象不会影响显示对象.如果您正在使用补间引擎,这可能非常繁琐,例如,您可能需要每次都重置矩阵的UPDATE事件处理程序,如下所示:
plane.transform.matrix3D = myModifiedMatrix3D;
Run Code Online (Sandbox Code Playgroud)
使用pivot方法,您可以简单地补间rotationX/Y/Z属性.