1

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

这就是我所拥有的

    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;
    }

乍一看它似乎有效,但后来我在输出中看到以下内容

类型错误:错误 #1006:停止不是函数。
在 Main/playSound()

类型错误:错误 #1006:停止不是函数。
在 Main/playSound()

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

4

2 回答 2

1

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

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

另一方面,我搜索了谷歌并弹出了Flash 播放/暂停声音

更新:

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;
    }
}

这段代码应该可以工作,但是我没有测试过,所以如果给出任何错误或没有达到预期的结果,请告诉我,我会看看我能做什么。

于 2013-04-01T17:51:17.917 回答
0

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

文档应该提供足够的信息来使用它。这是比较常见的。

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

于 2013-04-01T17:51:33.360 回答