2013-08-04 64 views
0

我需要一些帮助我的动作3项目。我有一个有声音的按钮。我有一些代码(见下文),当我按下按钮播放声音,如果我再次按下按钮,它会停止声音(如静音/取消静音按钮)。问题是,当我按下按钮播放第二次声音时,它会播放两个声音(同样的声音两次),并且如果我按下该按钮以多次播放相同声音播放声音的次数很多次。你能帮我解决问题吗?谢谢。静音取消静音按钮在动作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); 
    } 
    } 
+1

听起来像你的问题是在你的播放功能,你能告诉我们的代码吗? –

+0

你想停止声音或只是静音吗?这是两件不同的事情。 – putvande

+0

我只有一个按钮,我点击播放,静音并取消静音。声音在按钮中(分配给同一个按钮)。你有正确的putvande。该按钮应播放并停止不静音和取消静音。你能帮我用一个按钮的代码来播放声音,如果它是点击一次,并停止声音,如果它被点击两次? – Marianna

回答

4

从我的理解中,您将它分配到按钮点击帧开始声音?您需要通过代码开始的声音,才能以良好的方式控制声音。

这里是一个基于你的代码的工作示例,它加载了一个外部的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() 
} 

actionscrip 2有一个功能,将停止一切听起来,在动作3你不能这样做了,但你仍然可以将声音以帧。

+0

你们的答案都很棒,他们帮助我很多。对不起,我是新来的网站,我不明白:我怎么upvote答案? – Marianna

+0

谢谢。您点击向上指向的灰色箭头。似乎你需要15点声望才能够点名。请参阅:http://meta.stackexchange.com/questions/7237/how-does-reputation-work – user2650087

1

此示例将声音静音和取消静音。声音没有停下来,只是静音。 此处声音必须在代码中分配,而不是帧。

// 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; 
    } 
} 
// Toggle mute on/off 
function toggleMute() 
{ 
    if (Mute1 === false) 
    { 
     setMute1(0); 
    } 
    else 
    { 
     setMute1(1); 
    } 
} 
// This happens when you click the buttom 
function toggleMuteBtn1(event:Event) 
{ 
    // if not playing, the sound 
    if (myChannel.position != 0) { 
    } else { 
     myChannel = mySound.play(); 
    } 

    toggleMute(); 
}