我使用AS3WavSound(http://code.google.com/p/as3wavsound/)類播放外部加載的wav。這是成功的。圖書館簡單而有效。使用AS3WavSound播放WAV - 無法立即停止
解碼Wav ByteArray後,庫使用的方法是使用SampleDataEvent.SAMPLE_DATA事件,然後將混合樣本寫入輸出流。
player.addEventListener(SampleDataEvent.SAMPLE_DATA, onSamplesCallback);
private function onSamplesCallback(evt : SampleDataEvent):void
{
for (var i:int = 0; i < samplesLength; i++)
{
if(_mute == false){
outputStream.writeFloat(samplesLeft[i]);
outputStream.writeFloat(samplesRight[i]);
}
}
}
我的問題是,我需要立即關閉此音頻輸出,但任何方法我都試過有一明顯(即1秒左右)延遲沉默生效之前。
正如你所看到的,我試圖添加一個布爾值來阻止寫入輸出流的任何樣本,但是這對延遲沒有影響。
我懷疑這是如何緩衝樣本然後寫出來的基本部分。實質上,當屏幕上的用戶操作(單擊靜音按鈕)被調用並且_mute布爾值被設置爲true時,已經有樣本等待寫入輸出中,不會受到影響。
任何意見或確認我的懷疑將不勝感激。
謝謝, gfte。
這兩個答案中的任何一個能幫助你嗎?如果是這樣,您應該使用答案旁邊的向上箭頭,或通過單擊綠色箭頭將其標記爲正確答案。 – JeremyFromEarth 2012-01-14 00:35:43