Flash中的流式音频播放多次,重叠
下面的AS3代码有时会导致音频播放多次,几乎像疯狂的回声一样同时播放。它通常与该URL配合使用,但当我使用URL时,它总是会崩溃。我认为这个问题很少发生在本地文件上。我从其他地方复制了这段代码,所以我不能完全理解它。您认为这个实现有问题吗,还是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
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 );
}
我删除了
计时器
代码,因为它没有任何功能。谢谢,伙计,工作完美!我想我应该看两次那出戏。