2010-01-17 76 views
0

我以前可能遇到過這樣的代碼。只是不記得在哪裏。我的舞臺上有2個展示對象。一個旋轉,另一個與旋轉物體成90度定位。當物體旋轉時,另一個物體從旋轉物體調整它的x和y位置。如果這沒有意義,那麼讓我解釋我正在嘗試做什麼。我的Flash遊戲中有一個飛船。這艘船在左右翼上有兩個託雷。隨着輪船轉彎,託雷需要留在機翼上。有誰知道我會如何去做這件事。移動一個基於另一個對象旋轉的displayobject

回答

1

如果您堅持保持DisplayObject非嵌套,請使用三角函數。

假設在旋轉= 0時,您的炮塔物體距離r直接位於船中心的右側。

private function degreesToRadians(degrees:Number):Number { 
    return degrees * Math.PI/180; 
} 

turret.x = shipCenter.x + r*Math.cos(degreesToRadians(ship.rotation)); 
turret.y = shipCenter.y + r*Math.sin(degreesToRadians(ship.rotation)); 

然而,學習如何使用適當的變換矩陣或嵌套的顯示對象將最終導致一個更清潔的解決方案

+0

嘿謝謝。你是什​​麼意思非嵌套。我把這些炮塔從船艙內部稱之爲炮塔。這是你的意思嵌套?或者你的意思是把這些炮塔放在我的船上,從動畫片段內(即將它們從庫中拖放到位),我只嘗試了第一種解決方案。 – numerical25 2010-01-19 02:56:13

+0

我的意思是嵌套在顯示列表的意義上 - 將各種船舶部件的圖形表示放置到共享的DisplayObjectContainer子類中。我不確定如何在CS4中正確執行此操作,但顯示列表的基本原理如下所述:http://livedocs.adobe.com/flex/3/html/help.html?content=05_Display_Programming_01.html – ZackBeNimble 2010-01-19 03:28:53

3

你爲什麼不把它們嵌入翅膀內呢?如果機翼旋轉,它們將保持在機翼的頂部。

+0

翼是船舶圖像的一部分。所以我不得不根據整艘船形象 – numerical25 2010-01-17 20:23:44

+0

爲什麼不把它們作爲主船的孩子,並且它們的變換矩陣相對於父母?然後,隨着父母的旋轉,您將其應用於子女 – zebrabox 2010-01-18 00:13:05

+0

您能否爲我們提供旋轉之前和之後的圖形以及您的場景應該是什麼樣子? – antpaw 2010-01-18 10:48:18

相關問題