为什么这段代码行不通。我在库p5中使用javascript

时间:2018-07-26 21:46:05

标签: javascript p5.js

因此,我一直在观看编码培训,学习使用javascript进行编码,我试图复制他的代码,但无法正常工作。我正在用括号。这是情节:

https://www.youtube.com/watch?v=fBqaA7zRO58&t=0s&list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA&index=26

let bubbles = []

function setup() {
    createCanvas(600,400) 
    for (let i = 0; i < 3; i++) {
        let x = 10 + 30 * i
        bubbles[i] = new Bubble(x, 200, 40);
    }
}

function draw() {
    background(0);
    for(let i = 0; i < bubbles.lenght; i++) {
        bubbles[i].move;
        bubbles[i].show;
    }
}

class Bubble {
    constructor(x,y,r) {
        this.x=x;
        this.y=y;
        this.r=r;
    }
    move() {
        this.x = this.x + random(-5,5);
        this.y = this.y + random(-5,5);
    }
    show() {
        stroke(255);
        strokeWeight(4);
        noFill();
        ellipse(this.x, this.y, this.r * 2);
    }
}        

1 个答案:

答案 0 :(得分:0)

请养成检查developer toolsdebugging代码的习惯。

例如,我将从打印您正在使用的变量的值开始。像这样:

console.log(bubbles.lenght);
for(let i = 0; i < bubbles.lenght; i++) {

您会看到这将打印出undefined,这会给您一个提示:您拼写了length错了!

解决该问题后,您还有其他问题。采取这些行:

bubbles[i].move;
bubbles[i].show;

这不是调用函数的方式。您需要在函数名称后加上()括号:

bubbles[i].move();
bubbles[i].show();

退后一步,您实际上不应该尝试复制这样的代码。而是尝试从一个简单的示例开始,然后尝试work forward in small steps。然后,如果遇到错误,您将确切知道代码的哪一部分是问题所在。