今天更新到 creator v 2.0 版本之后,发现 cc.audioEngine.stop 方法的一个很无语的 bug。
不废话,直接上代码:
@property({ type: cc.AudioClip })
clip1: cc.AudioClip = null;
@property({ type: cc.AudioClip })
clip2: cc.AudioClip = null;
@property({ type: cc.AudioClip })
clip3: cc.AudioClip = null;
onLoad() {
let clip1ID= cc.audioEngine.play(this.clip1, false, 1);
cc.audioEngine.setFinishCallback(clip1ID, () => {
console.log('after clip1');
});
cc.audioEngine.stop(clip1ID); // 一旦调用了 stop 方法,下面音频的回调函数就都无法触发了
let clip2ID= cc.audioEngine.play(this.clip2, false, 1);
cc.audioEngine.setFinishCallback(clip2ID, () => {
console.log('after clip2');
});
let clip3ID= cc.audioEngine.play(this.clip3, false, 1);
cc.audioEngine.setFinishCallback(clip3ID, () => {
console.log('after clip3');
});
}
如上所示,如果调用了 cc.audioEngine.stop(clip1ID);
,那么 clip2 和 clip3 设置的 setFinishCallback
回调函数,就都无法触发了,这个是何解??
经过反复试验发现,一旦调用了cc.audioEngine.stop(clip1ID);
,那么所有的 setFinishCallback
回调都会无法触发。
之前的 v 1.9.3 都好好的…
(另外,在论坛的编辑器里编辑代码真的是好痛苦,根本无法格式化)