2011-10-23 46 views
0

我有這個問題:只關閉聲音 - 如何?

如何關閉遊戲中的聲音?我問,因爲我的設置中有兩個按鈕:打開/關閉音樂和打開/關閉聲音。打開和關閉音樂非常簡單,因爲它使用特定的聲音通道。但是,如何僅關閉音量(例如,音樂仍在播放,而不是遊戲聲音)?

當我通過SoundMixer.soundtransform靜音時,你聽不到任何聲音,所以這不是我想要的。在我的遊戲中,所有的聲音都被扔進一個數組中。我的第一個想法是,我經歷了陣列中列出的所有聲音,並關閉音量,但這是行不通的。請 - 任何人都可以幫忙嗎?非常感謝你。

//not working 

private var sounds:Array; 
private var soundChannels:Array = []; 
private var muteSoundTransform:SoundTransform = new SoundTransform(); 

public function muteSoundOnly():void { 

muteSoundTransform.volume = 0; 

var soundLength:int = soundChannels.length - 1; 
for (var soundCtr:int = soundLength; soundCtr >= 0; soundCtr--) 
{ 

soundChannels[soundCtr].soundTransform = muteSoundTransform; 

} 

} 
+1

將聲音添加到數組是一個很好的解決方案。你確定你沒有添加音樂到相同的陣列?或者音樂使用與效果相同的變換。 – Mattias

+1

你的靜音功能只能被調用一次嗎?或者您是否忽略了切換靜音非靜音電話的代碼?在這種情況下,您只需要一個函數toggleSoundOnly()來切換聲音。 –

+0

音樂使用不同的soundChannel(稱爲SoundTrackChannel),所以這應該不是問題。是的,我認爲這個函數只會被調用一次。我最初的想法是,你設置了一次音量。那麼我需要循環這個功能嗎? – drpelz

回答

0

我認爲這是比較容易做到這一點是這樣的:

var soundsON = true; 

,然後你玩任何聲音效果之前,請確保聲音打開,就像這樣:

if (soundsON) { 
mySound.play(); 
} 

如果你讓你的靜音按鈕做soundsON = false;,你的聲音效果將不會播放。

+1

當聲音正在播放並且您按靜音按鈕時,您不處理這種情況。 – Florent

相關問題