2012-10-31 144 views
3

我在Flash中創建了幾個按鈕。我試圖做到這一點,如果你點擊一個按鈕,音頻開始播放該按鈕。如果您單擊另一個按鈕,則活動音頻會停止,並且您最後單擊的按鈕的新音頻開始播放。Actionscript在不同按鈕上播放/暫停音頻

請幫忙嗎?

回答

2

你所描述的實際上很容易做到。

首先,我建議將音頻導入到您的Flash項目中。或者,有一種方法可以直接從外部文件播放它。這超出了我的答案範圍,所以如果你需要幫助,你應該發佈一個專門涉及它的問題。

假設您已經將音頻文件導入到Flash項目的庫中,請爲其創建一個as3實例。 (右鍵單擊庫中的文件,單擊屬性 - > ActionScript [選項卡] - > [檢查]導出爲動作腳本& [輸入名稱類]

現在,在代碼中創建聲音的定義。 (假設你的兩個聲音是在上一步中的類字段名爲「mySound1」和「mySound2」。)

var mySound1:Sound = new mySound1(); 
var mySound2:Sound = new mySound2(); 

現在,定義聲道。

var mySoundChannel:SoundChannel = new SoundChannel(); 

有兩種替代方法可以阻止一種聲音並播放另一種聲音。首先是創建一個每次都能執行的函數。第二種方法是創建兩個公式,一個用於「play」,一個用於「stop」。您需要決定哪種方法最適合您。我將使用雙功能的方法如下:

function stopSound():void 
{ 
    //This stops all sound in the sound channel. 
    //If there is nothing playing, nothing happens. 
    mySoundChannel.stop(); 
} 

//In this function, we create an argument that allows us to tell the function 
//what sound to we want it to play. 
function playSound(soundname:String):void 
{ 
    mySoundChannel = this[soundname].play(0, 0); 
} 

[注意,你可以調整播放()屬性來滿足您的需求,做這樣的事情開始在歌曲的中間,或無休止的循環下去吧。 0,0從頭開始,並且不循環。請參閱documentation。]

現在,您將按鈕的事件偵聽器連接起來。 (如果您需要事件偵聽器的幫助,閱讀documentation

myButton1.addEventListener(Mouse.CLICK, btn1Click); 
myButton2.addEventListener(Mouse.CLICK, btn2Click); 

function btn1Click(evt:Event):void 
{ 
    stopSound(); 
    playSound(mySound1); 
} 

function btn2Click(evt:Event):void 
{ 
    stopSound(); 
    playSound(mySound2); 
} 

這應該是足夠的信息,讓你開始。在我的遊戲核心中,我實際上有一個用於處理聲音回放的自定義類,使我能夠重複聲音,更改音量,並保持聲音不會相互衝突。我說要強調你可以在聲音課上做很多事情。做一些挖掘documentation的想法和幫助。

你也可以考慮在playSound函數中放置一個try-catch語句,因爲如果你傳遞一個不存在的聲音的名字,它會拋出一個引用錯誤。

+0

非常感謝你的幫助,但這聽起來很瘋狂,因爲即時通訊使用閃光燈,有點混淆,因爲如何做到上述步驟,聽起來很直截了當,是否有可能我可以打電話給我你或teamviewer進入我的電腦,並告訴我如何做一個按鈕?請告知或者直接給我一步一步地點擊什麼 –

+0

不幸的是,直到今天晚些時候我纔會回來。然而,在這種情況下,我會非常樂於提供幫助(因爲StackOverflow不是教Flash基礎的最佳場所)。通過我的博客聯繫表單(www.indeliblebluepen.com)給我留言,我會看看我能否給你更詳細的演練和一些資源。大約一年前我曾穿着鞋子,所以我可以說。 – CodeMouse92

+0

非常感謝你 –

相關問題