2011-04-18 71 views
2

有没有人有一点代码可以用来改变中心点DisplayObject在3D空间中旋转?我需要它与rotationX,rotationY和rotationZ一起工作。我知道这是一种解决方法,将每个对象都包装在另一个精灵中,并抵消了x位置,但我更喜欢数学解决方案。更改AS3中旋转的3D注册点

随着问题的一个例子,该代码应该做一个星形:

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 

...

UPDATE:感谢Alex的提示,我已经发布了可重复使用solution here :)

回答

3

您需要使用Matrix3D对象,并将其应用于DisplayObject实例转换属性。您需要先定义DisplayObject的z属性,然后才能应用4x4 3DMatrix转换。

因此,像:

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

希望它能帮助:)

+2

+1,被中途输入相同的事情:d – fenomas 2011-04-18 03:29:07

+0

甜啊 - 得到它现在整理。多谢你们! – cronoklee 2011-04-18 11:25:04