setInterval函数不执行

时间:2019-10-22 14:41:48

标签: javascript html

我正在使用HTML和Javascript开发游戏。我需要每2秒调用一次函数。我尝试使用setInterval,但未调用该函数。而且浏览器控制台不会显示任何错误。

function Apples() {
  this.Apples = [];
  this.indexCount = 0;
  this.CurrentTime;

  this.createApples = function() {
    this.Apples[this.indexCount] = new Apple();
    this.indexCount++;
  }

  this.updateApples = function() {
    for (var i = 0; i < this.indexCount; i++) {
      this.Apples[i].positionY += 1;
      this.Apples[i].drawApple();
    }
  }
}

var apples = new Apples;
setInterval(apples.createApples, 200);

1 个答案:

答案 0 :(得分:0)

由于它的上下文,它不起作用,您的代码是200毫秒,而不是2秒。

function Apple () {
  return {
    positionY: 0,
    drawApple: function () {}
  }
}

function Apples() {
  this.Apples = [];
  this.indexCount = 0;
  this.CurrentTime;

  this.createApples = function() {
    this.Apples[this.indexCount] = new Apple();
    this.indexCount++;
    console.log("new index", this.indexCount);
  }

  this.updateApples = function() {
    for (var i = 0; i < this.indexCount; i++) {
      this.Apples[i].positionY += 1;
      this.Apples[i].drawApple();
    }
  }
}

var apples = new Apples;
// use bind
// setInterval(apples.createApples.bind(apples), 2000);
// or use function
setInterval(() => apples.createApples(), 2000);
//setInterval(function () { apples.createApples(); }, 2000);