代码之家  ›  专栏  ›  技术社区  ›  Gubb

外部加载的声音在某些浏览器中回响

  •  0
  • Gubb  · 技术社区  · 14 年前

    我正在努力解决一个问题,在Mac上的Chrome和PC上的Chrome、Opera和Safari中,它似乎播放了两次声音,产生了一个不需要的回声效果,延迟相当随机(但总是不到半秒)。

    我有两个swf文件通过本地连接进行通信,主swf只需在第二个swf上调用一个函数,并将url作为参数传递给mp3文件。然后,第二个swf加载文件,onComplete播放它。

    这在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;
    }
    

    以前有人研究过这个问题吗?我迷路了。

    1 回复  |  直到 14 年前
        1
  •  0
  •   PatrickS    14 年前
       private var channel:SoundChannel;
    
       public function onSoundComplete(e:Event):void
       {
          if( channel != null )
               channel.stop();
    
          channel = audio.play( 0 , 1 );
       }