我正在研究p5.js上的项目
我的目标是像本示例here那样每隔X秒交换一次图像。
问题在于,当I try to do the same with a class object时,setInterval()不再起作用。
可能与范围有关吗?
答案 0 :(得分:0)
让我们从一个简单的示例开始:
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;
}
}