播放音乐我做了一个简单的封装
public PlayMusic(strMusicName:string,bLoop:boolean,volume:number) : void
{
this.m_musicVolume = volume;
if(this.m_bMusicMute)
{
volume = 0;
}
if(strMusicName=="")
{
return;
}
if(this.m_music>=0)
{
this.StopMusic();
}
console.log("播放Music:",strMusicName);
let self = this;
cc.loader.loadRes(strMusicName, cc.AudioClip, function (err, clip)
{
console.log("加载Music完成:",strMusicName);
if(err)
{
console.log("加载声音失败 %s",err.message);
}
else
{
self.m_music = cc.audioEngine.play(clip, bLoop, volume);
}
console.log("播放Music完成:",strMusicName);
}
);
}
我使用同样的方法,在helloworld示例中试了 能够正常播放音乐,没有报错!
游戏中调用PlayMusic的地方,是窗体组件的onEnable中调用的,我在helloworld示例中也试了在一个窗体组件onEnable中调用,也是可以正常播放音乐!
但是在游戏中,调用PlayMusic,报错如下:
04-02 15:06:36.412 7636-7673/cn.kxgamer.dog D/jswrapper: JS: 加载Music完成: sound/sound_bgm
04-02 15:06:36.412 7636-7673/cn.kxgamer.dog E/jswrapper: ERROR: Uncaught ReferenceError: HTMLAudioElement is not defined, location: src/cocos2d-jsb.js:0:0
STACK:
[0]9.t._unbindEnded@src/cocos2d-jsb.js:2769
[1]set@src/cocos2d-jsb.js:2892
[2]play@src/cocos2d-jsb.js:3109
[3]anonymous@src/project.js:159
[4]anonymous@src/cocos2d-jsb.js:15290
[5]anonymous@src/cocos2d-jsb.js:15184
[6]anonymous@src/cocos2d-jsb.js:21055
[7]fireTimeout@jsb-adapter/jsb-builtin.js:2191
[8]tick@jsb-adapter/jsb-builtin.js:2148
04-02 15:06:36.412 7636-7673/cn.kxgamer.dog E/jswrapper: [ERROR] (D:/CocosCreator_2.3.1/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8/Object.cpp, 562): Invoking function (0x5584c55420) failed!
04-02 15:06:36.412 7636-7673/cn.kxgamer.dog D/jswrapper: JS: 加载Music完成: sound/sound_bgm
04-02 15:06:36.422 7636-7673/cn.kxgamer.dog E/jswrapper: ERROR: Uncaught ReferenceError: HTMLAudioElement is not defined, location: src/cocos2d-jsb.js:0:0
STACK:
[0]9.t._unbindEnded@src/cocos2d-jsb.js:2769
[1]set@src/cocos2d-jsb.js:2892
[2]play@src/cocos2d-jsb.js:3109
[3]anonymous@src/project.js:159
[4]anonymous@src/cocos2d-jsb.js:15290
[5]anonymous@src/cocos2d-jsb.js:15184
[6]anonymous@src/cocos2d-jsb.js:21055
[7]fireTimeout@jsb-adapter/jsb-builtin.js:2191
[8]tick@jsb-adapter/jsb-builtin.js:2148
04-02 15:06:36.422 7636-7673/cn.kxgamer.dog E/jswrapper: [ERROR] (D:/CocosCreator_2.3.1/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8/Object.cpp, 562): Invoking function (0x5584c55420) failed!
04-02 15:06:36.462 7636-7673/cn.kxgamer.dog D/jswrapper: JS: 加载Music完成: sound/sound_bgm
从错误日志来看,明显是cc.loader.loadRes的回调在执行cc.audioEngine.play的时候出错了
另外说下,游戏在浏览器预览、微信小游戏平台以及模拟器中都可以正常跑,就是打包apk后,在真机上跑会出错!
不方便提供完整游戏工程包以供引擎组调试,不好意思!