2012-02-10 35 views
1

ピアノ/キーボードのアプリケーションを作成し、これを設定するための最良の方法を把握しようとする際に変数を使用してのディレクトリを持つにAS3埋め込みダイナミックオーディオファイル(複数可)/埋め込み

は私が計画して任意の提案を大好きですアセットフォルダ(ピアノ1/C4.mp3、ピアノ1/D4.mpg、...)の各楽器のサウンド

これらをすべてインポートする方法はありますか?また、このクラスに変数を渡して、どのフォルダからインポートしたいのかを示す方法もあります。

var type = "piano2"; //passed from class being called by 
foreach(notes as note){ 
    [Embed(source = 'assets/sounds/'+type +'/'+note+'.mp3')] private const C3:Class; 
    public var c3:Sfx = new Sfx(C3); 
} 

理想的であるか、すべてのノートを引っ張り、これらの「種類」ごとにクラスを持っている良いアイデアだろう

何か?

答えて

2

[Embed()]を使用してこの操作を行うことはできません。埋め込みは実行時属性ではなくコンパイル時属性です。一方、になります。一方、mp3リソースをデプロイ可能なパッケージ(swfまたはairアプリケーションであるかどうかにかかわらず)にパッケージ化し、Sound.load()を使用します。以下のような

何か:私はより高速なグラフィカルアセットをインポートするには、自分自身のスクリプト行わ

public initialize():void { 
    var type = "piano2"; //passed from class being called by 
    foreach(notes as note){ 
     var url = 'assets/sounds/'+type +'/'+note+'.mp3'; 
     var req:URLRequest = new URLRequest(url); 
     var sound:Sound = new Sound(); 
     sound.addEventListener(Event.COMPLETE, noteLoaded); 
     sound.load(req); 
    } 
} 

private noteLoaded(e:Event):void { 
    // do something with the loaded sound 
} 
0

、あなたのサウンドに同じことを行うことができます。 .flaのすべての曲をsounds.flaのような名前でインポートします。フォルダを作成して、希望どおりに注文することができます。一度それを行うと、私は選択したすべてを解析し、インポートするための空のクラスを作成し、次にこのような何かを印刷するjsflスクリプトを持っています。

//  this is the name   this is the class referencing what i exported in flash 
private ID_PIANO_SOUND_1:Sound = getClassByName(PIANO_SOUND_1); 
private ID_PIANO_SOUND_2:Sound = getClassByName(PIANO_SOUND_2); 
private ID_PIANO_SOUND_3:Sound = getClassByName(PIANO_SOUND_3); 
private ID_GUITAR_SOUND_1:Sound = getClassByName(GUITAR_SOUND_1); 

私はそれを貼り付けてフラッシュ内の静的クラスに押し込むことができます。 sounds.flaはswcとしてコンパイルしてプロジェクトに埋め込む必要があります。

幸運を祈る!