「Sound1」、「Sound2」などと呼ばれる 15 のサウンドがリンケージ プロパティに設定されています。ループ内で動的に参照したい。たとえば、代わりに
currentMusic = new Sound2();
どうすれば次のようなことができますか
currentMusic = new ("Sound" + i)();
または、これを行うより良い方法は何でしょうか?
「Sound1」、「Sound2」などと呼ばれる 15 のサウンドがリンケージ プロパティに設定されています。ループ内で動的に参照したい。たとえば、代わりに
currentMusic = new Sound2();
どうすれば次のようなことができますか
currentMusic = new ("Sound" + i)();
または、これを行うより良い方法は何でしょうか?
生成されたクラス名を変数に格納し、アプリケーション ドメインからクラスを取得して、新しいオブジェクトをインスタンス化します。例外に注意してください!
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");
}
実行時にムービー クリップまたはフォントをロードする場合と同じ手順を使用します。
ライブラリにサウンドが "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();
}