1

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

1 回答 1

2

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

if(nowPraying)
{
    Praying.removeEventListener(Event.SOUND_COMPLETE, doSomethingElse);
    Praying.stop();
    nowPraying = ! Praying;
    trace("Praying: " + currentSound);
}
于 2014-03-21T15:20:51.187 回答