移动设备上 cocos2d-javascript 中的音频问题

Problems with audio in cocos2d-javascript on mobile devices

本文关键字:音频 问题 cocos2d-javascript 移动      更新时间:2023-09-26

我正在尝试查找一些有关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视网膜,没有音频播放,或者至少似乎没有音频播放超过几秒钟的声音。我还没有找到任何具体说明设备支持可能存在哪些限制的内容,也没有看到在任何人的示例游戏中解决此问题的尝试,例如 月球勇士 - 它也不会在 iPhone 4s 上播放音频。

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

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

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

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

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

到目前为止,可接受的答案是Howler.js和HowlerAudioEngine.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.platformcc.config.deviceType总是为我返回"浏览器",所以我现在求助于像素比,因为我的测试设备将返回 true。

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

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