AS3 で Document クラスとして記述する場合、変数を宣言なしで動的に作成できますか?
たとえば、ライブラリからサウンド ファイルをインポートしています。約20のサウンドファイル。コードが fla 自体にある場合は、次のように for ループに代入できます。
this["SOUND"+increasingNumber]
しかし、documentClassthis
では、ステージではなくクラスを参照するため、これは機能しません。
変数を作成する方法はありますか?
AS3 で Document クラスとして記述する場合、変数を宣言なしで動的に作成できますか?
たとえば、ライブラリからサウンド ファイルをインポートしています。約20のサウンドファイル。コードが fla 自体にある場合は、次のように for ループに代入できます。
this["SOUND"+increasingNumber]
しかし、documentClassthis
では、ステージではなくクラスを参照するため、これは機能しません。
変数を作成する方法はありますか?
ライブラリにインポートしたら、サウンドファイルを右クリックしてそのプロパティに移動します。[actionscript]タブをクリックし、[アクションスクリプトのエクスポート]をオンにします。そのサウンドをインスタンス化するためにドキュメントクラスで使用できるクラス名を付けます。
あなたがそれをSound1と名付けた場合:
var sound:Sound = new Sound1();
sound.play();
上記の[loxxyの返信に編集]は、ドキュメントクラスで変数を作成する方法を示しています。すべてのサウンド変数を動的に作成するには、次のような配列を使用することをお勧めします。
ライブラリ内のすべてのサウンドにSound1からSound20という名前を付けたとします。
import flash.utils.getDefinitionByName;
var sounds:Array = [];
var soundClass:Class;
for(var i:int = 1; i<21; i++){
soundClass = getDefinitionByName("Sound" + i) as Class;
sounds.push(new soundClass());
}
fla でコードを追加するときは、それをフレームスクリプトに追加します。
フレームスクリプトは、一定の間隔 (フレームレート) で繰り返されるコードのブロックです。
このように addFrameScript を使用してそれを実現できます。
ただし、より良いアプローチは、フレームスクリプトと通常のクラス メソッドを混同しないことです。
コードから「ステージ」にアクセスできますが、確実に added_to_stage イベントの後にのみアクセスできます。
addEventListener(Event.ADDED_TO_STAGE, init);
function init(e:Event):void{
// Access 'stage' here
}