我正在尝试编写一些按下按钮时发出声音的代码,但是如果按下按钮并且声音正在播放,那么声音会暂停并再次播放而不是播放和重叠。
这就是我所拥有的
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()每次在第一次按钮点击后输入函数时调用,是否有一个方法允许我签入实时是否正在播放声音?
答案 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