如何在播放过程中停止声音

时间:2013-04-01 17:38:01

标签: actionscript-3 media audio

我正在尝试编写一些按下按钮时发出声音的代码,但是如果按下按钮并且声音正在播放,那么声音会暂停并再次播放而不是播放和重叠。

这就是我所拥有的

    var sound:alarm = new alarm();
    var isPlaying:Boolean = false;

    public function Main()
    {
        button.addEventListener(MouseEvent.CLICK,playSound);
    }

    public function playSound(e:Event):void
    {
        if(isPlaying)sound.stop();
        sound.play();
        isPlaying=true;
    }
乍一看似乎已经奏效但我在输出中看到了以下内容

  

TypeError:错误#1006:stop不是函数。
        在Main / playSound()

     

TypeError:错误#1006:stop不是函数。
        在Main / playSound()

显然它可以工作,虽然stop不是Sound类的方法。实现这个的正确方法是什么?另外我一直想知道是否有更合适的条件我可以使用,因为使用此代码sound.stop()每次在第一次按钮点击后输入函数时调用,是否有一个方法允许我签入实时是否正在播放声音?

2 个答案:

答案 0 :(得分:1)

在您的代码中,函数playSound(e:Event)应为playSound(e:MouseEvent);

您的权利stop()不是Sound类的方法,但是你没有使用Sound类,你使用alarm类(除非警报类扩展了Sound类)。

另一方面,我搜索了谷歌这个弹出up,Flash Play/Pause Sound

更新

import flash.media.SoundChannel;
// Make sure to import the SoundChannel class

var sc:SoundChannel = new SoundChannel();
var sound:Sound = new alarm();
var isPlaying:Boolean = false;
var pausePos:Number = 0;

public function Main()
{
    button.addEventListener(MouseEvent.CLICK,playSound);
}

public function playSound(e:MouseEvent):void
{
    if(isPlaying) {
        pausePos = sc.position;
        sc.stop();
        isPlaying = false;
    } else {
        sc = sound.play(pausePos);
        isPlaying = true;
    }
}

此代码应该可以使用,但是我没有测试过,所以如果发现任何错误或者没有达到预期的结果,请告诉我,我会看看我能做些什么。

答案 1 :(得分:0)

简短回答......好吧,我的全部答案:)。不要使用声音对象,请尝试使用SoundChannel对象。它提供了更多选项,包括音量和平衡控制,最突出的是停止。

文档应提供足够的信息以便使用它。这是相对常见的。

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/SoundChannel.html