在p5中调用不会循环的课程?

时间:2019-02-22 10:59:51

标签: javascript class object processing p5.js

我目前正在使用p5进行游戏,其中将包含一些非常复杂的内容……至少对我而言是这样。

在没有在p5中循环的情况下如何调用课程?

考虑以下代码:

function draw() {
  lumberjack.clicked();
}

class Lumberjack {
  constructor(x, y, br, bg, bb, dr, dg, db) {
    this.x = x,
    this.y = y,
    this.br = br,
    this.bg = bg,
    this.bb = bb,
    this.dr = dr,
    this.dg = dg,
    this.db = db
  }
  body() {
    noStroke();
    fill(this.br, this.bg, this.bb);
    rect(this.x, this.y, 20, 40);
    fill(this.dr, this.dg, this.db);
    rect(this.x + 4, this.y - 2, 2, 35);
    rect(this.x + 14, this.y - 2, 2, 35);
    rect(this.x, this.y + 30, 20, 10);
    fill(91, 51, 0);
    rect(this.x, this.y + 30, 20, 2);
    fill(255);
    rect(this.x + 9, this.y + 30, 2, 2);
  }
  move() {

  }
  clicked() {
    let d = dist(mouseX, mouseY, this.x + 10, this.y + 20);
    if (d < 20) {
      console.log("I'm a lumberjack and I'm ok");
    }
  }
}

如果我单击伐木工人,就会出现无限循环的console.logs。

我能弄清楚如何解决此问题的唯一方法是将函数调用放入mousePressed()函数中,但随后console.log仍被调用两次。

我可以在没有循环的情况下调用类吗?

谢谢!

最大

1 个答案:

答案 0 :(得分:3)

使用mouse clicked函数。

function draw() {
  lumberjack.draw() // do something to draw the lumberjack
}

function mouseClicked(e) {
  lumberjack.clicked() // handle click on canvas
}