首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chrome MP3和OGG中的RTS游戏HTML5音频卡顿和停止

Chrome MP3和OGG中的RTS游戏HTML5音频卡顿和停止
EN

Stack Overflow用户
提问于 2012-01-29 01:54:59
回答 2查看 527关注 0票数 1

我们正在用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)中都能正常工作,没有问题。我们也尝试从头开始查找该文件,但无济于事。

代码语言:javascript
复制
    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;

    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-07 16:33:31

原来这是Chrome中的一个bug,现在这个问题似乎已经被修复了。仍然存在一些声音加载和多个声道的问题,但声音的完全故障似乎已经解决。

票数 -1
EN

Stack Overflow用户

发布于 2012-05-25 17:02:58

这似乎是铬和铬的问题。我建议查看bug报告和开发人员的回答,或者只是等待问题得到解决,同时忽略问题。

遗憾的是,没有人比我在javascript方面有更多的经验,没有人提出任何关于解决办法的建议。我已经把这个问题提出来了,希望你能得到一些帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9047505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档