2014-01-09 55 views
0

UPDATED ANSWERED:Found a Work Around。我將我的數組更改爲一個mc名稱數組而非字符串,因此現在可以工作。儘管如此,這個問題是否能夠得到回答呢?as3數組字符串到movieClip


我有一個隨機的字符串名稱數組。我隨機整理出來。但我需要添加一個基於字符串名稱的現有動畫片段 。

這是我有什麼不工作。

public function addToStage() 
{ 
    Happy = sorted.sort(randomize); 
    trace("First is: " +Happy[0]); /// Works! 
    addChild(Happy[0]); // Does not work 
} 

錯誤,我得到 類型錯誤:錯誤#1034:類型強制失敗: 「蘋果」 不能轉換爲flash.display.DisplayObject。在main/init()[C:etc ... \ Main.as:64] Main()[C:etc]在main/addToStage()[C:etc .. \ Main.as:74] ... \ Main.as:25]

+0

是字符串的類名或實例名? – Marty

+0

是的。如果我失去了報價,它似乎正在工作。 –

回答

0

數組是動態的,類型在數組的子節點上丟失,它們被存儲爲Object。 添加到您必須將它們轉換爲擴展一個DisplayObject一個顯示對象或類的顯示列表:

addChild(Happy[0] as DisplayObject); // should work 
0

你要做的類型轉換一個從對象的DisplayObject。

private var tempMC:MovieClip; 

public function addToStage() 
{ 
    Happy = sorted.sort(randomize); 
    trace("First is: " +Happy[0]); /// Works! 
    tempMC = Happy[0] as MovieClip; 
    addChild(tempMC); // it should work 
} 
2

假設數組中的字符串是影片剪輯的名字乏那麼它就是這麼簡單:

this.addChild(this[Happy[0]]) 

這有效地查找與名稱等同於數組中的字符串中的一個變量,所以這個[「你好」]將尋找this.hello

如果字符串不是影片剪輯的名稱乏,那麼你就需要使用字典「地圖」的動畫片段中的字符串或對象,像這樣:

var dictionary:Dictionary = new Dictionary; 
dictionary["hello"] = movieClipVariable; 

this.addChild(dictionary["hello"]); 

讓我知道如果這不是你的意思,我會再看一次