2010-11-09 12 views
1

我有2的DisplayObject,一個含有其它類似代碼如下:的Actionscript旋轉從1個軸線

var sprite1:Sprite = new Sprite();

sprite1.addChild(loader1); // assume that I have load picture on to loader1

loader1.rotationZ = 30;

sprite1.rotationZ = -30; 如果我運行上述代碼中,上loader1圖像將看起來就像它不是招」因爲它的容器在相反的方向旋轉,所以完全旋轉。正如我所料,這是正確的。

但是,如果我有多個軸旋轉代碼:

loader1.rotationZ = 30;

loader1.rotationY = 50;

sprite1.rotationZ = -30;

sprite1.rotationY = -50;

現在,loader1將在不同的角度旋轉。我的問題是,爲什麼它不互相抵消? 請注意,loader1和sprite1的x,y,z位置均爲0,0,0。無論旋轉X,Y或Z如何,都會出現此問題。如果您有1個軸,則它可以正常工作。 2軸,它不會。

我張貼這個示例代碼,因爲我想了解Flash如何在3D中旋轉。在AS3文檔中,它宣稱它圍繞「3D父容器」旋轉是什麼?

+0

我很確定這裏的問題與矩陣的乘法有關,這可能非常棘手。希望有更廣泛的3D知識的人能夠給你一個明確的答案。你是否無法將圖像作爲位於旋轉子畫面上方的獨立顯示對象加載? – TheDarkIn1978 2010-11-09 04:53:54

+0

我的實際問題太複雜,無法解釋或放下示例代碼。但是這只是導致錯誤的一點。我想了解它是如何徹底運作的 – ohm 2010-11-09 11:07:39

回答

0

旋轉是相對於父項,當您旋轉父對象時,它將更改該子項的引用框。當你只圍繞一個軸旋轉時,這並不重要,但當你圍繞兩個軸旋轉時會產生變化。要撤消旋轉,您必須按照與其應用相反的順序撤消所有旋轉。

用一本書或您的手機在一個軸上旋轉90度,然後在第二個軸上旋轉90度來嘗試。你不能回到你開始的地方,你會一直參與第三軸。