Actionscript 3 as3停止声音删除事件侦听器?

Actionscript 3 as3停止声音删除事件侦听器?,actionscript-3,audio,event-listener,soundchannel,Actionscript 3,Audio,Event Listener,Soundchannel,我有一个问题,停止一个声音,然后启动它回来。在我停止声音并再次启动之后,eventListener似乎消失了 现在“简单”的解决方法似乎只是在再次启动声音时“添加”另一个。 这是不容易做到的,因为“祈祷”的声道有动态的听者 添加了一个不同的函数,在每个函数末尾调用。所以我必须知道向它添加了什么侦听器,以及完成后应该调用什么函数 同样,我只想用鼠标点击“暂停”当前的祈祷,然后再点击一次,在同一地点启动它。但问题是,它删除了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引用,如果您下次调用它,您会得到一个新引用。您需要再次注册事件,但不要忘记删除侦听器

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

显然,您还将
nowPraying
设置为错误的值,您应该有
nowPraying=!现在开始