在AS3中更改3D注册点以进行旋转

时间:2011-04-18 02:52:24

标签: flash actionscript-3

有没有人可以用一些代码来改变中心点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:)

1 个答案:

答案 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

希望有所帮助:)