我的 Actionscript 3 项目需要一些帮助。我有一个带有声音的按钮。我有一些代码(见下文),当我按下按钮时,它会播放声音,如果我再次按下按钮,它会停止声音(就像静音/取消静音按钮)。问题是,当我第二次按下按钮播放声音时,它会播放两个声音(相同的声音两次),如果我多次按下按钮播放声音,相同的声音会播放多次。你能帮我解决这个问题吗?谢谢。
function setMute1(vol){
sTransform1.volume = vol;
SoundMixer.soundTransform = sTransform1;
}
var sTransform1:SoundTransform = new SoundTransform(1,0);
var Mute1:Boolean = true;
sound1_btn.addEventListener(MouseEvent.CLICK,toggleMuteBtn1);
function toggleMuteBtn1(event:Event) {
if(Mute1 === false) {
Mute1 = true;
setMute1(0);
} else {
Mute1 = false;
setMute1(1);
}
}
Run Code Online (Sandbox Code Playgroud)
据我了解,您通过将声音分配给按钮点击框架来启动声音?您需要通过代码启动声音才能很好地控制声音。
这是一个基于您的代码的工作示例,它加载外部mp3文件。通过同一按钮播放和停止声音。
// load the sound
var mySound:Sound = new Sound();
mySound.load(new URLRequest("loop.mp3"));
var myChannel:SoundChannel = new SoundChannel();
// tool you need for manipulating the volume;
var sTransform1:SoundTransform = new SoundTransform(1,0);
// The sound starts not muted
var Mute1:Boolean = true;
var vol:Number = 0;
sound1_btn.addEventListener(MouseEvent.CLICK,toggleMuteBtn1);
// Set the sound volume;
function setMute1(vol)
{
sTransform1.volume = vol;
SoundMixer.soundTransform = sTransform1;
// Check if sound is muted
if (vol<=0)
{
Mute1 = true;
}
else
{
Mute1 = false;
}
}
// Start/stop sound
function startOrStop()
{
if (Mute1 === false)
{
myChannel.stop();
setMute1(0);
}
else
{
setMute1(1);
myChannel = mySound.play();
}
}
// This happens when you click the buttom
function toggleMuteBtn1(event:Event)
{
startOrStop()
}
Run Code Online (Sandbox Code Playgroud)
在actionscrip 2中,有一个函数可以停止所有声音,在actionscript 3中你不能再这样做了,但你仍然可以将声音分配给帧。