参考使用计时器
在 Cocos Creator 3.0 中,我们为组件提供了方便的计时器。也许有人会认为 setTimeout 和 setInterval 就足够了,开发者当然可以使用这两个函数,不过我们更推荐使用计时器,因为它更加强大灵活,和组件也结合得更好!
下面是 Component 中所有关于计时器的函数:
- schedule:开始一个计时器
- scheduleOnce:开始一个只执行一次的计时器
- unschedule:取消一个计时器
- unscheduleAllCallbacks:取消这个组件的所有计时器
一、传递参数
1.匿名函数
this.scheduleOnce(function(){
this.spawnFoe(spawn)
}, spawn.outTime);
2.更常用的是bind方式
private showCombineEffect(pos: Vec3) {
let effect = PoolManager.Instance.getNode(this.combineEffect, this.combineEffectParent);
effect.setPosition(new Vec3(pos.x, pos.y, pos.z + 3));
//播放完后回收
this.scheduleOnce(this.poolCombineEffect.bind(this, effect), 1.5);
}
private poolCombineEffect(n: Node) {
PoolManager.Instance.putNode(n);
}
在 scheduleOnce除了用bind传参,还有其它方法传参数吗?中作者提出,bind会创建一个新函数,会导致unschedule无效。所以可以这样干:
test(p: number) {
console.log("test:", p);
}
private _testFunc: any;
start() {
this._testFunc = this.test.bind(this, 22);
this.scheduleOnce(this._testFunc, 5);
}
onClickBackHome() {
this.unschedule(this._testFunc);
}
网友评论