我正在为一个问题而苦苦挣扎,在Mac上的Chrome和PC上的Chrome,Opera和Safari中,它似乎播放了两次声音,并以相当随机的延迟(尽管不到半秒)产生了有害的回声效果。 。
我有2个通过LocalConnection通信的swf文件,主swf只是在第二个swf上调用了一个函数,并将URL作为参数传递给mp3文件。然后,第二个swf加载文件,然后onComplete播放它。
这在Mac和PC上的IE(这是第一个)和Firefox上都可以完美运行,但如上所述。
我什至实现了双重检查,以确保如果已经在播放声音,则不会播放声音。
一些示例代码:
var audio:Sound;
var isPlayingSound:Boolean = false;
var soundURL:String;
public function lcRecieve(url:String = ""):void{
soundURL = url;
if (soundOn && !isPlayingSound){
playSound();
}
}
public function playSound():void {
if(!isPlayingSound){
audio = new Sound(new URLRequest(soundURL));
audio.addEventListener(Event.COMPLETE, onSoundComplete);
}
}
public function onSoundComplete(e:Event):void{
audio.play(0, 1).addEventListener(Event.SOUND_COMPLETE, soundFinnishedPlaying);
isPlayingSound = true;
}
private function soundFinnishedPlaying(e:Event):void {
e.target.removeEventListener(Event.SOUND_COMPLETE, soundFinnishedPlaying);
audio = null;
isPlayingSound = false;
}
以前有人对这个问题不休吗?我很迷路。
最佳答案
private var channel:SoundChannel;
public function onSoundComplete(e:Event):void
{
if( channel != null )
channel.stop();
channel = audio.play( 0 , 1 );
}
关于flash - 在某些浏览器中外部加载的声音回声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4312127/