2015-01-07 119 views
0

所以即時通訊工作在HTML5/JavaScript rts遊戲。 Obv有幾種聲音都在播放。所以對我而言,一段時間後,這些聲音有點「崩潰」,並且此瀏覽器選項卡上的所有聲音都停止工作。我只能通過重新啓動瀏覽器來重新啓動聲音,重新啓動選項卡(=重新加載遊戲)並不修復它。這是我用來播放聲音:HTML5音頻停止工作一段時間後(泄漏)

// play sound 
soundToPlay.load(); 
soundToPlay.play(); 
soundToPlay.volume = volume; 

即時通訊win7和FF。當我玩遊戲時會發生什麼事情是,Windows進程「audiodg」會增加內存使用量,並且當聲音停止工作時,它通常會達到2.5 gb。當我關閉瀏覽器時,大部分時間它會回落到幾MB,通常應該在那裏。這個audiodg的東西是一個已知的bug(不是我的遊戲,但總的來說),但我不會在我的遊戲之外與audiodg發生任何問題。我的遊戲的大多數用戶似乎沒有這個問題,只有相對較少的人,但我肯定不是唯一的問題,而且它肯定不是唯一的FF事物,我也看到它發生在Chrome上。

+0

您在您的標記使用音頻標籤偶然? – Todd

+0

不,所有javascript(新音頻(文件名)) – Johannes

回答

0

因此,我的猜測是,您每次必須播放時都會創建new Audio(filename)

所以,即使使用JavaScript創建這些,您最終仍然會使用HTML模板。

var a = new Audio('file.mp3'); 
// <audio preload=​"auto">​</audio>​ 

在的光,你應該叫new Audio(filename)只有一次,並將其存儲在可當聲音應該發揮引用的變量:,

var clone = $(a).clone()[0]; 
clone.play(); 
clone.volume = volume; 
clone.onended = function() { 
    $(clone).remove(); 
} 
+0

不,我只在遊戲加載時使用新音頻(每個文件)。當我播放聲音時,我使用我的開場白中的三條線。 – Johannes

+0

你有沒有試過我的代碼? – Todd

+0

嘗試過,沒有任何改變 – Johannes