2011-04-18 60 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