2012-04-24 203 views
0

我有一個帶有不同身體部位的角色:頭髮,頭,身體,胳膊,腿。 我使用步行動畫和站立動畫爲角色製作動畫。 我在這些動畫的每個動畫中給角色的頭髮一個頭發的實例名稱,所以我可以通過AS3訪問它。 比方說,我有一個不同的電影剪輯,這是一個不同類型頭髮的靜態圖像。 我希望能夠使用AS3將角色的頭髮改爲那頭髮。AS3:通過AS3更改動畫動畫片段的兒童動畫片段

實例: model =動畫movieclip在持有者movieclip中。 頭髮=模型的孩子,但動畫

類: 動畫=動畫片段容器(改變基準點和調整) Hair2 我想改變頭髮Hair2

anim.model的一個實例。 hair = new Hair2();

當我追蹤它時,它顯示對象已被更改,但在顯示屏上沒有更改。 我使用AS3IsoLib所以這裏是一個例子代碼:

var anim = new Anim(); 
var hair2 = new Hair2(); 
anim.model.hair = hair2; 
sprites = [anim]; 

我測試縮放頭髮和工作正常,但不能代替實例本身。

我在想我該如何做到這一點。如果您玩過一些MMO遊戲,用戶可以選擇修改他或她的身體部位。 Adventure Quest Worlds就是一個例子。這是我想要達到的效果。

回答

0

AS2語法很混亂:設置anim.model.hair實際上沒有任何意義。 這裏是你應該怎麼寫呢:

//keep a reference for the previous hair 
var previousHair:MovieClip = anim.model.hair; 
//copy position, rotation, scale 
hair2.transform.matrix = previousHair.transform.matrix.clone(); 
//remove the previous hair from model 
anim.model.removeChild(previousHair); 
//put the new hair in place 
anim.model.addChild(hair2); 
//give a new instance name to hair2 so you can access it through anim.model.hair 
hair2.name = "hair"; 
+0

如果hair2還是個孩子已經是我爲實例模型動畫的那會工作。但是,如果我創建的hair2類的實例除了作爲一個完全獨立的動畫片段之外,沒有鏈接到動畫,它就不起作用。 – 2012-04-24 12:53:44

+0

然後會發生什麼?什麼不見​​了?預計什麼? – Kodiak 2012-04-24 13:46:13

+0

我同意。這個解決方案應該在一般情況下工作。如果它沒有這樣做,你可能需要發佈更多的代碼。聽起來'hair1'可能會被加載兩次,如果'hair1'仍然存在,或者如果'hair2'沒有出現,它可能不可見,它可能是一個空的MovieClip,它可能被錯誤定位等。 – iND 2012-04-25 03:52:08