Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修复Ball类不在每次单击鼠标时出现的问题_Javascript_Arrays_Class_P5.js - Fatal编程技术网

Javascript 如何修复Ball类不在每次单击鼠标时出现的问题

Javascript 如何修复Ball类不在每次单击鼠标时出现的问题,javascript,arrays,class,p5.js,Javascript,Arrays,Class,P5.js,我想在每次单击鼠标时创建一个新球,但什么也没有出现。我在另一个文件中有一个名为Ball的类。我通过硬编码我想出现多少个球来实现它,但我不知道为什么这不起作用 Main: let balls = []; let r, g, b; let xpos, ypos; let size; let xlimit, ylimit; let xlimit2, ylimit2; let xspeeddir, yspeeddir; function setup() { createCanvas(800,

我想在每次单击鼠标时创建一个新球,但什么也没有出现。我在另一个文件中有一个名为Ball的类。我通过硬编码我想出现多少个球来实现它,但我不知道为什么这不起作用

Main:

let balls = [];
let r, g, b;
let xpos, ypos;
let size;
let xlimit, ylimit;
let xlimit2, ylimit2;
let xspeeddir, yspeeddir;

function setup() {

    createCanvas(800, 450);

    xlimit = width - 15;
    ylimit = height - 15;
    xlimit2 = size / 2;
    ylimit2 = size / 2;
}

function mousePressed() {
    r = random(0, 255);
    g = random(0, 255);
    b = random(0, 255);
    xspeeddir = random(-5, 5);
    yspeeddir = random(-5, 5);
    size = random(20, 40);

    let bb = new Ball(mouseX, mouseY, xspeeddir, yspeeddir, size);
    balls.push(bb);
}

function draw() {

    background(255, 238, 112);

    for (let i = 0; i < balls.lenght; i++) {
        balls[i].move();
        balls[i].show(250, 200, 40);
    }
}
let balls=[];
设r,g,b;
让XPO、YPO;
让大小;
让xlimit,ylimit;
设xlimit2,ylimit2;
让xspeeddir,yspeeddir;
函数设置(){
createCanvas(800450);
xlimit=宽度-15;
ylimit=高度-15;
xlimit2=尺寸/2;
ylimit2=尺寸/2;
}
函数mousePressed(){
r=随机(0,255);
g=随机(0,255);
b=随机(0,255);
xspeeddir=随机(-5,5);
yspeeddir=随机(-5,5);
尺寸=随机(20,40);
设bb=新球(鼠标、鼠标、xspeeddir、yspeeddir、大小);
球。推(bb);
}
函数绘图(){
背景(255238112);
for(设i=0;i
编辑:添加球类

class Ball {
    constructor(x, y, xspeed, yspeed, size) {
        this.x = x;
        this.y = y;
        this.size = size;
        this.speedx = xspeed;
        this.speedy = yspeed;
    }

    appear(r, g, b) {
        this.r = r;
        this.g = g;
        this.b = b;
        fill(this.r, this.g, this.b);
        noStroke();
        ellipse(this.x, this.y, this.size, this.size);
    }

    move() {
        if (this.x >= xlimit) {
            this.x = xlimit;
            this.speedx = -(this.speedx)
        }

        if (this.x <= xlimit2) {
            this.x = xlimit2;
            this.speedx = -(this.speedx)
        }

        if (this.y >= ylimit) {
            this.y = ylimit;
            this.speedy = -(this.speedy)
        }

        if (this.y <= ylimit2) {
            this.y = ylimit2;
            this.speedy = -(this.speedy)
        }

        this.x = this.x + this.speedx;
        this.y = this.y + this.speedy;
    }
}
班级舞会{
构造函数(x、y、x速度、y速度、大小){
这个.x=x;
这个。y=y;
这个。大小=大小;
this.speedx=xspeed;
这个.speedy=y速度;
}
出现(r、g、b){
这个。r=r;
这个.g=g;
这个.b=b;
填充(这个r,这个g,这个b);
仰泳();
椭圆(this.x,this.y,this.size,this.size);
}
移动(){
if(this.x>=xlimit){
此.x=xlimit;
this.speedx=-(this.speedx)
}
if(this.x=ylimit){
y=ylimit;
this.speedy=-(this.speedy)
}

如果(this.y您的for循环中有一个输入错误

for (let i = 0; i < balls.lenght; i++) {
    balls[i].move();
    balls[i].show(250, 200, 40);
}
后期编辑


您正在调用
balls[i].show(25040040);
但您没有
show()
在你的Ball类中起作用。

仍然不起作用。我应该显示Ball类吗?是的,如果它不起作用,那么它在你的Ball类@Stefan122GG中是一个问题。你可以看到class@Luke GarringanI已经更新了我的答案@Stefan122GG,你也可以将以前的代码添加到问题中吗,只针对将来使用此帖子的人,w我不想把他们弄糊涂:)该死的,我很蠢。谢谢你。我是个乞丐,如果这看起来是个愚蠢的问题,我很抱歉
for (let i = 0; i < balls.length; i++) {
    balls[i].move();
    balls[i].show(250, 200, 40);
}