P5.JS .show()不是函数,为什么?

时间:2019-01-08 15:24:33

标签: javascript p5.js

不确定我是否弄错了范围,但我尝试将功能稍微移动一下,但这只是给我的提示,不是功能错误。

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




function draw() {
  background(0);
	for (i = 0; i < bubbles.length; i++){
		bubbles[i].show();
}}
	
	function show() {
	stroke(20);
	strokeWeight(2);
	fill(random(255), 0, random(255))
	ellipse(this.x, this.y, this.r * 2)

}

class Bubble {
	constuctor(x, y, r){
	this.x = x;
	this.y = y;
	this.r = r;
}}

1 个答案:

答案 0 :(得分:1)

正如Rabbid76的评论所述,您的主要问题是您正在Bubble对象中调用一个不存在的函数。因此,您应该将其弹出到Bubble类中:

class Bubble {
    constructor(x, y, r){
    this.x = x;
    this.y = y;
    this.r = r;
  }

  show() {
    stroke(20);
    strokeWeight(2);
    fill(random(255), 0, random(255))
    ellipse(this.x, this.y, this.r * 2)
  }
}

另外,只要您知道您遗忘了constructor,并且如果您使用的是p5在线编辑器,它就不会将其标记为错误,它认为您已经定义了一个名为{{1} },这是完全有效的语法。

另一件事,您将每个气泡的x和y位置传递为200、200,这基本上意味着每个气泡都将彼此重叠,我假设您希望它们散布在屏幕周围:

constuctor

哦,还有,您可能想将r,g,b颜色存储在bubbles[i] = new Bubble(random(width), random(height), 20); 对象中,这样就不会在每一帧中都选择已知颜色!