as3停止声音删除eventListener?

时间:2014-03-21 14:54:08

标签: actionscript-3 audio event-listener soundchannel

我遇到停止声音然后重新启动它的问题。在我停止声音并再次启动之后,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);
        }
    }

1 个答案:

答案 0 :(得分:2)

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

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