2011-09-12 17 views
1

私のAS3プロジェクトには.mp3ファイルをロードするボタンが2つあり、それを再生します。私は動作していないそれらのファイルを切り替える2つのボタンがあります。AS3 - 2037エラー

Error: Error #2037: Functions called in incorrect sequence, or earlier call was unsuccessful. 
    at flash.media::Sound/_load() 
    at flash.media::Sound/load() 
    at player_fla::MainTimeline/playMusic1() 

私は、ファイルが再生しようとする前にロードされていないと考えていますが、それは正しいですか?再生する前にファイルがロードされているかどうかを確認する方法はありますか? Flashでの非同期

function playMusic1(evt:MouseEvent):void{ 
     channel.stop(); 
     channel2.stop(); 
     songPosition = 0; 
     var soundFile2:URLRequest = new URLRequest("http://r.jaxna.com/mp3Player/slushy.mp3"); 
     myMusic2.load(soundFile2, myContext); 
     channel = myMusic.play(songPosition); 
     channel2 = myMusic2.play(songPosition); 

     } 



function playMusic2(evt:MouseEvent):void { 
     channel.stop(); 
     channel2.stop(); 
     songPosition = 0; 
     var soundFile3:URLRequest = new URLRequest("http://r.jaxna.com/mp3Player/kingRight.mp3"); 
     myMusic2.load(soundFile3, myContext); 
     channel = myMusic.play(songPosition); 
     channel2 = myMusic2.play(channel.position); 

答えて

4

サウンドファイルのロード:

は、ここに私のコードです。 Event.COMPLETEイベントをリッスンし、そのイベントハンドラで、両方がロードされているかどうかを確認するコードを追加してから再生します。

例:

​​
0

それはあなたが別のサウンドファイルをロードするために、同じSoundオブジェクトを使用してのように見えます。ドキュメントには、別のサウンドファイル(load関数を参照)をロードするために以前に読み込まれたサウンドオブジェクトを再利用できないことが明示的に記載されている場合は、別のサウンドを読み込んで再生するたびにnew Sound()オブジェクトを作成する必要があります。一度ロードすると、好きなだけ何度でもそのサウンドを再生し、サウンドの任意のポイントから再生を開始できます。

これらの特定のサウンドファイルだけを再生する場合は、2つのサウンドオブジェクトを作成してプリロードすることができます。