我们正在用HTML5/JavaScript编写一个Canvas演示实时策略(RTS)游戏,一切都很正常。然而,在Chrome (最新版本)中,声音一直断断续续,最终放弃了。代码在最新的火狐、IE9和Safari上运行得很好(虽然在iOS4的iPhone/iPad上根本没有声音,但显然这是苹果的商业决定)。你可以在下面的链接上亲眼看到,只是一次听到几个以上的声音就会导致问题。
http://www.enterprisewarfare.com/Play.aspx
简化的声音播放代码如下,注意每个声音存在4次(AUDIO_CHANELS_PER_FILE)来模拟多个声道。调整此数字不会导致声音损失提前或延迟,因此它与到达数组末尾或再次播放相同的音频对象无关。我们已经尝试了OGG和MP3两种文件格式,在IE9 (MP3)和火狐(OGG)中都能正常工作,没有问题。我们也尝试从头开始查找该文件,但无济于事。
this.PlaySound = function(sId)
{
var iSoundMapIndex;
var asoundChannels;
if(sId == null || sId.length == 0) return;
// Grab sound channels array
iSoundMapIndex = this.SoundMap[sId];
asoundChannels = this.Sounds[iSoundMapIndex];
if(asoundChannels == null)
{
this.World.AddMessage("Unable to find sound \"" + sId + "\".");
return;
}
// play the next in sequence
asoundChannels[this.SoundChannel[iSoundMapIndex]].volume = 1;
asoundChannels[this.SoundChannel[iSoundMapIndex]].play();
this.SoundChannel[iSoundMapIndex]++;
if(this.SoundChannel[iSoundMapIndex] == this.AUDIO_CHANNELS_PER_FILE) this.SoundChannel[iSoundMapIndex] = 0;
}发布于 2012-09-07 16:33:31
原来这是Chrome中的一个bug,现在这个问题似乎已经被修复了。仍然存在一些声音加载和多个声道的问题,但声音的完全故障似乎已经解决。
发布于 2012-05-25 17:02:58
这似乎是铬和铬的问题。我建议查看bug报告和开发人员的回答,或者只是等待问题得到解决,同时忽略问题。
遗憾的是,没有人比我在javascript方面有更多的经验,没有人提出任何关于解决办法的建议。我已经把这个问题提出来了,希望你能得到一些帮助。
https://stackoverflow.com/questions/9047505
复制相似问题