-1

我正在尝试查找一些有关 cocos2d-javascript 音频支持的文档。使用 mp3 或 ogg 格式使用标准方法预加载音频并播放它们:

var audioEngine = cc.AudioEngine.getInstance();
audioEngine.playEffect(s_sound);
// s_sound is a reference to a preloaded audio resource

在所有浏览器中都能完美运行。但是,当您在设备上加载浏览器时,比如说 iphone 4s 视网膜,没有音频播放,或者至少似乎没有音频播放超过几秒钟的声音。我没有找到任何具体说明设备支持可能存在哪些限制的内容,我也没有看到任何尝试在诸如Moon Warriors的示例游戏中解决此问题- 它也不会在 iphone 4s 上播放音频。

我正在尝试同时播放多个声音。

每个有问题的声音都超过 15 秒,并且是一个大于 500k 的文件

肯定会加载所有音频,因为游戏不会出​​现,除非它们是

每个音轨都是吉他英雄类型游戏背景音乐的一层。这就是为什么它们超过 500k 并且超过 15 秒的原因。

也许这里有人遇到过类似的问题,并且可能知道一种保证在移动设备上播放音频的方法?

4

1 回答 1

1

到目前为止,可接受的答案是对我们Howler.jsHowlerAudioEngine.js

我在脚本加载器中加载这两个文件,然后修改 Platform/HTML5/CocosDenshion/SimpleAudioEngine.js -

cc.AudioEngine.getInstance = function () {
    if (window.devicePixelRatio > 1) {
        if (!this._instance) {
            this._instance = new cc.HowlerAudioEngine();
            this._instance.init();
        }
    } else {
        if (!this._instance) {
            this._instance = new cc.AudioEngine();
            this._instance.init();
        }
    }
    return this._instance;
};

请注意window.devicePixelRatio > 1我一般在哪里检测到视网膜显示或高清。这可以用任何经过验证的检测“移动”替代 - 但是,sys.platform总是cc.config.deviceType为我返回“浏览器”,所以我现在求助于像素比,因为我的测试设备将为此返回 true。

然而,缺点是声音效果的交付仍然存在很大延迟。我可以在很大程度上弥补这一点,所以这总比没有好。另外,我还没有找到音频文件的容差阈值(播放时间或数据长度)。我确实知道我的大约 3 分钟的较长曲目即使在咆哮声中也不会播放,但我的 1 分钟曲目可以。

如果您有任何更好,更可靠或只是对此的补充,请发布。对 cocos2d-javascript 的支持还不够,所以一切都有帮助。

于 2013-10-02T04:06:34.463 回答