在impactjs中重置计时器

时间:2014-04-07 17:42:17

标签: javascript timer impactjs

我试图在触发某个事件后重置我的计时器。目前我的游戏内定时器在我的更新中每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()之外发生某个事件,如何从其他不同功能重置我的游戏计时器?

1 个答案:

答案 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

上的影响文档