你们好,下面是 1.6.0 里面的 CCAudioEngine 中的 setFinishCallback:
setFinishCallback: function (audioID, callback) {
var audio = getAudioFromId(audioID);
if (!audio)
return;
audio.off('ended');
audio.on('ended', callback);
}
窃以为其中 audio.off('ended') 会引起在 getAudioFromPath 中的清理工作失败,如下:
var getAudioFromPath = function (path) {
...
if (audioEngine._maxAudioInstance <= list.length) {
var oldId = list.shift();
var oldAudio = id2audio[oldId];
oldAudio.stop();
}
audio = new Audio(path);
var callback = function () {
var id = this.instanceId;
delete id2audio[id];
var index = list.indexOf(id);
cc.js.array.fastRemoveAt(list, index);
};
audio.on('ended', callback);
audio.on('stop', callback);
...
};
还有另一个问题就是,setLoop 不需要判断 _loaded 之后处理吗类似 setVolume?

