Поменяйте местами изображение с помощью setInterval () с классом - p5.js - PullRequest
0 голосов
/ 06 декабря 2018

Я работаю над проектом на p5.js

Моя цель - менять изображение каждые X секунд, как я делал в этом примере здесь .

Проблема в том, что когда я пытаюсь сделать то же самое с объектом класса , setInterval () больше не работает.

Это то, чтоможет быть, это связано с областью применения?

1 Ответ

0 голосов
/ 06 декабря 2018

Давайте начнем с более простого примера:

class Test {
  constructor(testMessage) {
    this.testMessage = testMessage;
  }
  show() {
    println(this.testMessage);
  }
}

Что вы ожидаете от этого кода?

var message = 'hello';
var test = new Test(message);
message = 'goodbye';
test.show();

То, как ваш код работает сейчас, похоже, что вы быожидается, что это напечатает 'goodbye', но на самом деле это напечатает 'hello'.

Это потому, что вы передаете значение переменной в конструктор Test.Теперь у вас есть две переменные, указывающие на одно и то же значение 'hello'.Затем вы изменяете первую переменную , но это не меняет автоматически значение второй переменной .

Чтобы исправить это, вы можете просто использовать одну глобальную переменную message, что-токак это:

class Test {
  show() {
    println(message);
  }
}

var message = 'testing';
var test = new Test();
test.show();

Или вы можете создать что-то вроде setMessage() функции, которая позволит вам изменить значение внутри класса:

class Test {
  constructor(testMessage) {
    this.testMessage = testMessage;
  }
  show() {
    println(this.testMessage);
  }
  setMessage(testMessage) {
    this.testMessage = testMessage;
  }
}
...