cc.audioEngine.play在安卓下有bug?

我的游戏会连续播放一些音频,但是在安卓中第一次进入游戏时头几次调用 cc.audioEngine.play时,总是没有声音,大概调用三四次后才有声音。这个问题在苹果手机不会出现,在电脑chrome上也不会出现,在微信开发工具里不会出现。已经尝试了在界面上加按钮让用户点击,但是问题依然存在。感觉仍然和安卓中的那个触发播放机制有关,当触发某个条件后就可以正常播放了,但是不知道为什么加按钮点击后,仍然不能触发,而且程序一直在播放背景音乐完全不会有问题。我的cocos creator版本是2.3.3。

现在想用wx的音频api,但是播放路径不知道如何处理。

请大家帮忙看看,谢谢。

if (cc.sys.platform == cc.sys.WECHAT_GAME) {
        this.wxAudioContext = wx.createInnerAudioContext();
        // 方法1:资源放服务器
        // this.wxAudioContext.src = "资源服务器地址/" + cc.url.raw("resources/test.mp3");
        // 方法2:资源放包体resources下
        this.wxAudioContext.src = cc.url.raw("resources/test.mp3");
        this.wxAudioContext.play();
        this.wxAudioContext.onEnded(() => {
            cc.log("onEnded");
        });

        // iOS忽略静音健
        this.wxAudioContext.obeyMuteSwitch = false;
    } else {
        cc.loader.loadRes("test", (err, clip) => {
            cc.audioEngine.playEffect(clip, false);
        });
    }

另外注意适当时机释放监听和销毁:this.wxAudioContext.offEnded(…)和this.wxAudioContext.destroy();

参考:
https://developers.weixin.qq.com/minigame/dev/guide/base-ability/audio.html
https://developers.weixin.qq.com/minigame/dev/api/media/audio/InnerAudioContext.html

谢谢。这种方法路径固定的可以,但是拼接的路径总是不行,播放不出声音。下面控制台输出的路径都是一样的,但是只有第一种能够播放声音出来。
let path = resources/audios/week/Monday.mp3;
//let path = resources/audios/${name}.mp3;
//let path = ‘resources/audios/’+name+’.mp3’;
//let path = resources/audios/+${name}+.mp3;
//let path = “resources/audios/”+name+".mp3";
console.log(‘path:’+path);
this.wxAudioContext.src = cc.url.raw(path);;

1赞

少了一个"week/"

你好,这个问题在所有机型上都会出现吗?我们的测试结果并没有出现这个问题。

我试了两台安卓手机都有这个问题。在苹果上就没有这个问题。我的音频文件比较多,我用个audioclip数组在编辑器里就把音频拖进去了,数组大概有150个音频文件。然后我在update里面隔1秒播放数组中的一个元素。就是安卓手机下游戏最开始两个声音不出来,其它情况下都是完全正常的。

week/是在name中传进来了的,没有少。

我是在切换场景几秒后进行的播放,不知道是不是和场景刚加载有关?我用audiosource,然后单独在代码里给它赋值一个clip,也是会有前面几个音不出声的情况。

我在安卓真机上调试出现很多下面的错误,不知道是怎么回事?
VM59:164 Error: not node js file system!path:res/raw-assets/69/69370910-b36f-4b55-80e7-22187cc0c3cf.mp3; go invokeHandler

应该是节点编辑器里不能拖太多音频文件造成的。按照我的测试,拖了20个音频过去就会出现我说的问题。现在我在代码里加载音频数组,就没有这个问题了。其实我是按照官方文档建议做的在编辑器里拖。