更改AS3中旋转的3D注册点
问题描述:
有没有人有一点代码可以用来改变中心点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 :)
答
您需要使用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
希望它能帮助:)
+1,被中途输入相同的事情:d – fenomas 2011-04-18 03:29:07
甜啊 - 得到它现在整理。多谢你们! – cronoklee 2011-04-18 11:25:04