Flash中的流式音频播放多次,重叠

Flash中的流式音频播放多次,重叠,flash,actionscript-3,audio,stream,Flash,Actionscript 3,Audio,Stream,下面的AS3代码有时会导致音频播放多次,几乎像疯狂的回声一样同时播放。它通常与该URL配合使用,但当我使用URL时,它总是会崩溃。我认为这个问题很少发生在本地文件上。我从其他地方复制了这段代码,所以我不能完全理解它。您认为这个实现有问题吗,还是Flash太疯狂了 var url:String = "http://md9.ca/portfolio/music/seaforth.mp3"; var request:URLRequest = new URLRequest(url); var s

下面的AS3代码有时会导致音频播放多次,几乎像疯狂的回声一样同时播放。它通常与该URL配合使用,但当我使用URL时,它总是会崩溃。我认为这个问题很少发生在本地文件上。我从其他地方复制了这段代码,所以我不能完全理解它。您认为这个实现有问题吗,还是Flash太疯狂了

var url:String = "http://md9.ca/portfolio/music/seaforth.mp3"; 

var request:URLRequest = new URLRequest(url);  
var s:Sound = new Sound();  
s.addEventListener(Event.COMPLETE, completeHandler);  
s.load(request);  var song:SoundChannel = s.play();  
song.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);  


var time:Timer = new Timer(20);  
time.start();

function completeHandler(event:Event):void {    
  event.target.play();  
}  

function soundCompleteHandler(event:Event):void {   
  time.stop();  
}
您正在对
Sound
对象调用
play()
两次。当您创建变量
song
时,以及文件加载完成时,都会执行一次

您可能希望以不同的方式构造代码

var url:String = "http://md9.ca/portfolio/music/seaforth.mp3"; 

var song:SoundChannel;
var request:URLRequest = new URLRequest(url);  
var s:Sound = new Sound();  
s.addEventListener(Event.COMPLETE, onLoadComplete );  
s.load(request);

function onLoadComplete(event:Event):void 
{    
  song = s.play();
  song.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);   
  s.removeEventListener( Event.COMPLETE, onLoadComplete );
}  

function soundCompleteHandler(event:Event):void 
{   
  trace( 'sound is complete' );  
  song.removeEventListener( Event.SOUND_COMPLETE, soundCompleteHandler );
}

我删除了
计时器
代码,因为它没有任何功能。

谢谢,伙计,工作完美!我想我应该看两次那出戏。