2013-02-22 116 views
2

旋轉X和旋轉Y有點問題。As3 sprite旋轉X和旋轉Y

這很酷,如果我只是做了roationX和rotaionY下面

_eventParent.rotationY =_differentX; 
_eventParent.rotationX =_differentY; 

然而,一旦我有指定鼠標移動到_eventParent。 roationX和roationY在鼠標移動時會透視。所以相反,該項目保持相同的大小。它預期增加和減少規模。任何想法爲什麼這樣做?有沒有可能阻止這種行爲?

謝謝

請找到下面的圖像。

enter image description here

+0

發佈更多代碼,也許會顯示問題的swf。 – 2013-02-22 07:01:57

+0

@JonatanHedborg謝謝jonatan我已經上傳了一個形象的情況。 – Bruce 2013-02-23 01:24:05

回答

4

透視允許您的形狀的一部分看起來比其他部分更接近你。問題在於透視圖有一箇中心或「消失點」,默認情況下它是固定的。當你將形狀從消失點移開時,視角會發生變化,導致你的形狀變寬或變窄。

您可以通過更新消失點來解決此問題,使其始終與形狀相同。由於形狀總是處於消失點,因此角度不應改變。

要做到這一點,爲你的形狀的PerspectiveProjection:

_eventParent.transform.perspectiveProjection = new PerspectiveProjection(); 

的PerspectiveProjection位於flash.geom包,所以不要忘了將其導入。

然後,每當您更新形狀的位置,更新它的消失點:

_eventParent.transform.perspectiveProjection.projectionCenter = 
    new Point(_eventParent.x, _eventParent.y); 

您可能需要通過像素的一組數字,以抵消消失點讓找你想要的方式運行的角度。

+0

哇,這聽起來像是一個很好的解決方案,我將在下一個星期一進行測試,如果測試結果正確,就會給你打勾。 :)非常感謝! – Bruce 2013-02-23 06:08:39

+0

HI bwroga,_eventParent.transform.perspectiveProjection = new PerspectiveProjection();發生在mouseDown之後? – Bruce 2013-02-25 04:57:28

+1

@ bluebill1049我會在創建_eventParent並首次設置投影中心時設置它。這樣就不會有任何奇怪的跳躍。 – bwroga 2013-02-25 05:28:03

0

糾正我,如果我誤解你的問題。你的問題是,如果你將旋轉應用到movieClip對象,那麼爲什麼尺寸似乎在變化?

爲了簡化,我們不要在X軸和Y軸上應用旋轉。我們來看一個長方形的影片剪輯,然後onMouseMove我們做++myMovieClip.rotationX;

現在,此聲明將對該對象應用有關X軸的旋轉,並且可以獲取影片剪輯在X軸上翻轉的透視圖,並且此翻轉會顯示對象大小的變化。

這同樣適用於旋轉y軸。

+0

嗨abhinav,rotationX和rotationY工作得很好。我的問題是在應用sprite或movieClip的rotationX和rotationY之後。嘗試從sprite或movieClip開始。當鼠標移動而不是保持相同的rotationX和rotationY時,您會看到項目傾斜。 – Bruce 2013-02-23 01:15:05