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