actionscript 3 - as3停止声音删除eventListener



我有一个问题,停止一个声音,然后重新启动它。在我停止声音并再次启动它之后,eventListener似乎消失了。

现在的"简单"修复似乎只是"添加"另一个当你再次开始的声音。这是不容易做到的,因为声音频道"祈祷"有动态听众添加了一个不同的函数,在每个函数的末尾调用。所以我必须知道它添加了什么监听器,以及完成后应该调用什么函数。

再次,我只是想"暂停"当前祈祷的鼠标点击和启动它在同一地点与另一个点击。但问题是,它正在删除eventListener与指令做什么后,声音完成播放。

有什么想法吗?或者这是一个简单的解决办法?

 /// EXAMPLE 1
 Praying = OFE.play();
 Praying.addEventListener(Event.SOUND_COMPLETE, prayDecade );
 /// EXAMPLE 2
 Praying = JES.play();
 Praying.addEventListener(Event.SOUND_COMPLETE, doSomethingElse);
public function togglePraying(e:Event = null)
    {
        if(nowPraying)
        {
            Praying.stop();
            nowPraying = ! Praying;
            trace("Praying: " + currentSound);
        }
        else
        {
            Praying = currentSound.play();
            nowPraying = ! Praying;
            trace("Praying: " + Praying);
        }
    }

这是正常的,当你调用OFE.play()时,你会得到一个SoundChannel引用,如果你另一次调用它,你会得到一个NEW reference 。您需要再次注册事件,但不要忘记删除侦听器。

if(nowPraying)
{
    Praying.removeEventListener(Event.SOUND_COMPLETE, doSomethingElse);
    Praying.stop();
    nowPraying = ! Praying;
    trace("Praying: " + currentSound);
}

最新更新