为什么我的程序不绘制我的矩形?
why wont my program draw my rectangle?
我有一组代码是从 youtube 上的某个人那里复制的,我完全理解其中有一些未使用的逻辑,但基本上目前它要做的就是获取 rocket.show 函数并绘制一个矩形,我终其一生都无法弄清楚为什么不这样做。它没有抛出任何错误并绘制背景,如果我只是将 "rect..." 的代码放在绘图函数中,我可以绘制矩形因此我引用该函数的方式有问题但我不能为了我的一生,代码在下面,我们将不胜感激。
function setup() {
createCanvas(800, 600);
background(0);
rocket = new rocket();
}
function draw() {
rocket.update;
rocket.show;
}
function rocket() {
this.pos = createVector();
this.vel = createVector();
this.acc = createVector();
this.applyforce = function (force) {
this.acc.add(force);
}
this.update = function () {
this.vel.add(this.acc);
this.pos.add(this.vel);
this.acc.mult(0);
}
this.show = function () {
push();
translate(this.pos.x, this.pos.y);
rotate(this.vel.heading());
rectMode(CENTER);
rect(0, 0, 10, 50);
pop();
}
}
编辑:我解决了,很抱歉占用了不必要的帖子space
在 rocket.update
之后它需要看起来像这样:
rocket.update();
。我的错。
您没有正确调用函数。
在javascript中,函数是变量,所以我可以说a = Math.floor
,然后我可以调用a(1.76)
并得到1
作为响应。但是,这意味着无论何时调用函数,即使您不使用任何参数,也必须包含参数。您可以使用一组空括号来执行此操作。如果你不包括这些括号,你所做的实际上是调用 console.log(whatever function)
.
在您的情况下,这意味着您需要将 rocket.update
和 rocket.show
替换为 rocket.update()
和 rocket.show()
我有一组代码是从 youtube 上的某个人那里复制的,我完全理解其中有一些未使用的逻辑,但基本上目前它要做的就是获取 rocket.show 函数并绘制一个矩形,我终其一生都无法弄清楚为什么不这样做。它没有抛出任何错误并绘制背景,如果我只是将 "rect..." 的代码放在绘图函数中,我可以绘制矩形因此我引用该函数的方式有问题但我不能为了我的一生,代码在下面,我们将不胜感激。
function setup() {
createCanvas(800, 600);
background(0);
rocket = new rocket();
}
function draw() {
rocket.update;
rocket.show;
}
function rocket() {
this.pos = createVector();
this.vel = createVector();
this.acc = createVector();
this.applyforce = function (force) {
this.acc.add(force);
}
this.update = function () {
this.vel.add(this.acc);
this.pos.add(this.vel);
this.acc.mult(0);
}
this.show = function () {
push();
translate(this.pos.x, this.pos.y);
rotate(this.vel.heading());
rectMode(CENTER);
rect(0, 0, 10, 50);
pop();
}
}
编辑:我解决了,很抱歉占用了不必要的帖子space
在 rocket.update
之后它需要看起来像这样:
rocket.update();
。我的错。
您没有正确调用函数。
在javascript中,函数是变量,所以我可以说a = Math.floor
,然后我可以调用a(1.76)
并得到1
作为响应。但是,这意味着无论何时调用函数,即使您不使用任何参数,也必须包含参数。您可以使用一组空括号来执行此操作。如果你不包括这些括号,你所做的实际上是调用 console.log(whatever function)
.
在您的情况下,这意味着您需要将 rocket.update
和 rocket.show
替换为 rocket.update()
和 rocket.show()