2014-01-11 104 views
0

旋轉我有一個對象,看起來像這樣: enter image description here對象不繞樞軸點

當我嘗試使用[INSTANCENAME].rotation += 10; 它仍然圍繞物體中間旋轉,其旋轉。難道我做錯了什麼?

回答

1

我已經做了一點研究,顯然沒有直接的方式來以編程方式更改支點,AFAIK。奇怪的是,你可以在Flash Pro IDE中改變它。 (對於那些閱讀,樞軸點是不同的登記點。)

[編輯:更多地思考它,我不認爲樞軸點實際上「存在」,至少在上下文中可編程屬性。它只存在於Flash IDE中某些工具的上下文中。]

您需要將對象ALONE放置在另一個對象內,以便內部對象的所需樞軸點位於外部對象的中心之上。然後,旋轉外部物體。

您稍後可以通過更改內部對象的位置來控制對象的「軸心點」。

由於外部對象的中心根據其尺寸移動,內部對象的位置決定了外部物體的大小,你需要運用一些數學。內部對象的x位置需要等於內部對象上所需樞軸點到該內部對象最右邊緣的距離。相同的概念適用於y位置。

這既可以在IDE中直接完成,或通過代碼,無論你選擇。

的代碼的示例動態地改變這一點。該功能位於外部對象內部。 (你可以得到pivotX和pivotY關閉事件偵聽器,如果你想要的。)對不起,代碼是未經測試。]

function newPivot(int pivotX, int pivotY):void 
{ 
    inner.x = inner.width - pivotX; 
    inner.y = inner.height - pivotY; 
} 

我希望可以解決您的問題!

+0

嗯。對象的樞軸點是具有(0,0)座標的該對象內的點,並且與註冊點相同。當我將旋轉應用到對象時,它會圍繞(0,0)自身旋轉。這在Flash CS6中已經改變了嗎?雖然是的,如果你想要一個對象圍繞另一個點旋轉,將它包裝在容器精靈中,並調整其x和y以匹配所需的中心點,然後旋轉對象而不是其容器。 – Vesper

+0

不,註冊點是被考慮的對象上的點(0,0)。樞軸點是旋轉發生的地方。它們可以是相同的(有時是默認的),但它們不是同一個屬性。如果你混淆了註冊表。點,你會拋棄所有的內部座標,並使定位更加困難。如果您只是更改樞軸點(在IDE中或通過上述方法),則可以避免該問題。從CS5開始就一直如此。5,可能更長時間基於文檔。 – CodeMouse92

1

一個非常簡單的方法是做這樣的。

  1. 將圖像轉換爲符號(MovieClip)。 [你可能已經做到了]。
  2. 雙擊該影片剪輯/雪碧裏面輸入。
  3. 移動圖像,使註冊點對準樞軸。

注:僅適用於FLASH IDE的情況下。

+0

你能否詳細說明第三項? NB是什麼意思? – user2789610

+0

@ user2789610:雙擊MovieClip進入其中。現在移動圖像(在你的情況下,上面的圖像),以便把手與中心點對齊(我不確定它是否顯示你的中心點)。檢查這一個得到我提到的想法[編輯註冊點](http://www.kirupa.com/developer/mx/rpoint.htm) &NB意味着:引起注意某事特別重要:) –