AS3:当currentframe ==时如何播放声音?

时间:2012-11-22 01:05:03

标签: actionscript-3

不幸的是,下面的代码导致声音以电影的帧速率重复出现。我只需要一个简单的“在特定帧上播放声音”功能,但无法想出这个。谢谢你的帮助。

addEventListener(Event.ENTER_FRAME,soundFunction);
function soundFunction(event:Event)
{
if (naturepage.ocean_btns.currentFrame == 2)
{
    ocean_channel.stop();
    ocean_channel = ocean1.play(0,int.MAX_VALUE);
    mySO.data.ocean = "2";
    mySO.flush();
}

}

1 个答案:

答案 0 :(得分:1)

这似乎是正确的。你确定naturepage.ocean_btns动画片段在第二帧没有停止或者反复循环很少的帧吗?

另一种选择是使用一个标志来查看你是否已播放声音:

var alreadyPlayedSound:Boolean = false;
addEventListener(Event.ENTER_FRAME,soundFunction);
function soundFunction(event:Event)
{
    if (naturepage.ocean_btns.currentFrame == 2 && !alreadyPlayedSound)
    {
        alreadyPlayedSound = true;

        ocean_channel.stop();
        ocean_channel = ocean1.play(0,int.MAX_VALUE);
        mySO.data.ocean = "2";
        mySO.flush();
    }
}

或者在播放声音后删除事件监听器:

addEventListener(Event.ENTER_FRAME,soundFunction);
function soundFunction(event:Event)
{
    if (naturepage.ocean_btns.currentFrame == 2)
    {
        ocean_channel.stop();
        ocean_channel = ocean1.play(0,int.MAX_VALUE);
        mySO.data.ocean = "2";
        mySO.flush();

        removeEventListener(Event.ENTER_FRAME,soundFunction);
    }
}