Вызов класса в p5, который не будет зацикливаться? - PullRequest
0 голосов
/ 22 февраля 2019

В настоящее время я работаю над игрой с 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 голосов
/ 22 февраля 2019

Используйте функцию , нажатую мышью .

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

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