2011-09-12 68 views
1

我有2個按鈕在我的AS3項目加載.mp3文件,然後播放它們。我有兩個按鈕可以在那些不工作的文件之間切換。我得到一個錯誤說: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個聲音對象並預加載它們。