Actionscript 3 中的静音取消静音按钮

Mar*_*nna 0 actionscript-3

我的 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)

use*_*087 5

据我了解,您通过将声音分配给按钮点击框架来启动声音?您需要通过代码启动声音才能很好地控制声音。

这是一个基于您的代码的工作示例,它加载外部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中你不能再这样做了,但你仍然可以将声音分配给帧。