有没有人可以用一些代码来改变中心点DisplayObjects在3D空间中旋转?我需要它来处理rotationX,rotationY和rotationZ。我知道这是一个解决方法,包括在另一个精灵中包裹每个对象并抵消x&我的位置,但我更喜欢数学解决方案。
作为问题的一个例子,这段代码应该是星形:
var a=new Sprite()
addChild(a)
a.graphics.lineStyle(0,0xFF0000)
a.graphics.moveTo(10,10)
a.graphics.drawRect(100,100,100,100)
var b=new Sprite()
addChild(b)
b.graphics.lineStyle(0,0)
b.graphics.moveTo(10,10)
b.graphics.drawRect(100,100,100,100)
b.rotationZ=45
...
更新:感谢Alex的提示,我发布了一个可重复使用的 solution here:)
答案 0 :(得分:3)
您需要使用Matrix3D对象,并将其应用于DisplayObject实例转换属性。在应用4x4 3DMatrix转换之前,需要先定义DisplayObject的z属性。
类似于:
myObject.z = 1;
myObject.transform.matrix3D.appendTranslation(10,10,0);
myObject.transform.matrix3D.appendRotation(1, Vector3D.Y_AXIS);
myObject.transform.matrix3D.appendTranslation(-10,-10,0);
来自:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/geom/Matrix3D.html
希望有所帮助:)