我遇到停止声音然后重新启动它的问题。在我停止声音并再次启动之后,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);
}
}
答案 0 :(得分:2)
这是正常的,当你调用OFE.play()时,你会得到一个SoundChannel引用,如果你再次调用它,你会得到一个新参考。您需要再次注册该事件,但不要忘记删除该侦听器。
if(nowPraying)
{
Praying.removeEventListener(Event.SOUND_COMPLETE, doSomethingElse);
Praying.stop();
nowPraying = ! Praying;
trace("Praying: " + currentSound);
}