/**
* !#en Play audio.
* !#zh 播放音频
* @method play
* @param {String} filePath - The path of the audio file without filename extension.
* @param {Boolean} loop - Whether the music loop or not.
* @param {Number} volume - Volume size.
* @return {Number} audioId
* @example
* //example
* var audioID = cc.audioEngine.play(path, false, 0.5);
*/
play: function (filePath, loop, volume/*, profile*/) {
var audio = getAudioFromPath(filePath);
var callback = function () {
audio.setLoop(loop || false);
audio.setVolume(volume || 1);
audio.play();
};
audio.__callback = callback;
audio.on('load', callback);
audio.preload();
return audio.instanceId;
},
js.get(audioEngine, 'playEffect', function () {
// cc.warn(INFO, 'audioEngine.playEffect', 'audioEngine.play');
return function (url, loop, volume) {
return audioEngine.play(url, loop, volume === undefined ? effectsVolume : volume);
}
});
以上是引擎js层的实现,我的代码是这样子的
var volume = 0;
var id = cc.audioEngine.playEffect(url, false, volume);
我本打算要将这个音效播放声音大小设置为0,但是实际效果是能听见声音,然后追代码,发现是||导致的
audio.setVolume(volume || 1);

这个判断有点蛋疼啊,如果想要设置静音播放,那么volume不能为0,得是0.0001,没错,你永远也不可能把声音大小设置为0,另外发现所有设置音量的都要走
audio.setVolume(volume || 1);



