我试图在触发某个事件后重置我的计时器。目前我的游戏内定时器在我的更新中每4秒检查一次该事件,如下所示:
timer: new ig.Timer(),
update:function(){
//console.log(this.timer.delta());
if (this.timer.delta() >= 0) {
this.performAchievementChecks();
this.timer.set(4);
}
},
performAchievementChecks:function(){
if(tempArray.length >= 1 && this.Achievements[achID].status == this.storage.get(achKey)){
this.performUpdate(achID);
}
}
performUpdate:function(achID){
this.timer.set(0);
this.updateAchievements(achID);
}
所以我的函数performAchievementchecks()
每隔4秒被调用一次,如果它的if语句变为true
,那么我想将我的计时器重置为0,但它不会这样做。有人可以指出我做错了什么吗?如果是这样,如果在update()
之外发生某个事件,如何从其他不同功能重置我的游戏计时器?
答案 0 :(得分:0)
我不确定"将我的计时器重置为0" 是什么意思,如果你只想让计时器重置,你就不必做任何事情,因为你已经设置了this.timer.set(4);
,另一个选择是禁用它,为此你可以简单地将变量设置为null。
<强>提示:强>
1.您可以直接使用目标创建计时器:
timer: new ig.Timer(4)
然后使用this.timer.reset();
重新启动计时器。
2.如果要禁用它,可以将timer变量设置为null this.timer = null;
,并检查变量是否在更新时分配:
if (this.timer && this.timer.delta() >= 0) { ... }
PS:查看定时器here
上的影响文档