2013-08-04 102 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(); 
}