2011-10-05 100 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

有趣。尽管如此,仍然无法工作,我会继续研究这一点。谢谢... –