适用于3.7以后所有版本。
cocos2d-x 3.x 中的音频引擎有几个方面的问题:
基于上述考虑以及本人之前的研究,在3.7中基于OpenAL编写新的声音引擎,并废弃所有旧接口。
预加载audio.loadFile(path, callback)
,path为res下的相对路径,callback为异步加载后引擎通知Lua端的回调函数接口。callback参考如下:
function(fn, success)
if not success then
print("Fail to load audio:" .. fn)
return
end
end
参数fn为audio.loadFile的path,success为布尔变量,表面是否加载成功。 一旦音频文件预加载之后,可以作为背景音乐或音效进行播放。
播放BGM audio.playBGM(path, isLoop)
,第二个参数默认为true。
播放Effect audio.playEffect(path, isLoop)
,第二个参数默认为false,playEffect返回音源对象,可调用pause()、resume()、stop()、setVolume(vol)
这几个方法。
注意:平台不同,支持的最大音源数不同。为了保障后续音效的正常播放,音源在audio内部有及时的回收机制。所以audio.playEffect返回的音源对象,不应长期持有;返回音源对象只是为了便于你进行setVolume来独立控制单个音效音量的目的。
在某些windows声卡驱动下,如果不插入耳机,又没有其它外接扬声器,会导致OpenAL无法初始化。情况尴尬,遇到这种情况,插入耳机进行测试吧。