2012-08-16 58 views
1

我有15個叫做「Sound1」,「Sound2」等的聲音,在連接屬性中設置。我想在一個循環中動態引用它們。例如,而不是如何動態引用類鏈接?

currentMusic = new Sound2(); 

我怎麼可以這樣做

currentMusic = new ("Sound" + i)(); 

還是什麼話是這樣做的更好的辦法?

回答

1

存儲生成的類名的變量,檢索類從應用程序域中實例化新對象。 注意例外!

var soundClassName:String = "Sound" + i; 
var soundClass:Class; 
var sound:Sound; 

try { 
    soundClass = getDefinitionByName(soundClassName) as Class; 
    sound = new soundClass(); 
} catch (re:ReferenceError) { 
    trace("Class '" + soundClassName + "' not found"); 
} catch (te:TypeError) { 
    trace("Unable to instantiate the sound object"); 
} 
1

使用與在運行時加載影片剪輯或字體相同的過程。

假設你已經在你的庫導出爲「sound_0」,「sound_1」,......,「sound_9」等聲音:

for(var i:uint = 0; i < 10; i++) 
{ 
    var soundClass:Class = getDefinitionByName("sound_" + i.toString()) as Class; 
    var sound:Sound = new soundClass(); 
}