2011-10-05 50 views
2

我在我的HTML5應用的某些事件中播放了幾個mp3 soundclips。沒有標籤,腳本在開始時創建Audio對象(每個mp3一個)並加載文件。當我必須播放聲音時,我只需在其中一個對象上調用play()。在iPhone上使用HTML5音頻播放soundclips問題

這在Chrome桌面上工作正常,但在iPod touch中非常不穩定,最終有些聲音停止播放,我甚至會收到錯誤警報。

這是我設置的一個小腳本,用於查看問題,它的主機號碼爲soundtest.staticloud.com,包括3個音頻文件,因此您可以在iPhone上查看它。

var snd = []; 

window.onload = function() { 
    for(var i = 0; i < 3; i++) { 
     snd[i] = new Audio("snd" + i + ".mp3"); 
     snd[i].load(); 
    } 
} 

function sound(n) { 
    snd[n-1].play(); 
} 

我做錯了什麼?

回答

3

我在iDevices中遇到了很多音頻問題......您必須做的是在開始下一個之前將最後播放的剪輯刪除。另外,我只是有一個單一的音頻對象,並且將改變源,所以我的解決方案看起來更像是這樣的:

<html> 
<body> 
<audio></audio> 
etc 
</body> 
<script type="text/javascript"> 
var sounds=[]; 

window.onload = function() { 
    for(var i = 0; i < 3; i++) { 
     sounds[i] = "snd" + i + ".mp3"; 
    } 
} 

function sound(n){ 
snd=document.getElementsByTagName("audio")[0]; 
snd.pause(); //-----------------PAUSE THE LAST (WHICH MAY BE LONG DONE) 
snd.src=''; //-----------------BLANK SRC 
snd.src=sounds[n-1]; //---------REPLACE WITH NEW SOUND 
snd.load(); 
snd.play(); 
} 
</script> 
</html> 
+0

我上傳它來嘗試一下...... snd0.mp3失敗,但我會假設iOS對該文件有問題。另外兩個似乎可以正常工作,除了自按鈕敲擊之後它們需要很長時間,並且在後續敲擊時它不會更快,就好像每次播放音頻文件時都會下載一樣。這是正常的,有沒有繞過它?謝謝 –

+0

您可以使用cache.manifest將文件存儲在用戶設備上(也可以使功能脫機) –

+0

有趣。儘管如此,仍然無法工作,我會繼續研究這一點。謝謝... –