我正在学习使用Processing.JS对我正在做的事情有一个非常基本的想法。我正在学习使用案例创建对象。此代码的目的是创建在屏幕上反弹的随机对象(球),当单击鼠标时,将创建一个新球,从而创建原始球和新球。我希望能够多次这样做,所有球随机弹跳。我让代码适用于一个球并且将代码设置为我创建新对象并将它们添加到数组中的点,但是每次单击单个球时都会重置到屏幕中间。这是代码:
//random ball maker
Ball[] newBall = new Ball[1];
void setup(){
size(500,500);
newBall[0] = new Ball();
}
void draw(){
//newBall.display();
// newBall.movement();
for (int i = 0; i < newBall.length; i++) { //Loops through all mrect objects
newBall[i].display();
}
for (int i = 0; i < newBall.length; i++) { //Loops through all mrect objects
newBall[i].movement();
}
}
void mousePressed(){
Ball ballInstance = new Ball();
newBall = (Ball[]) append(newBall, ballInstance);
}
class Ball{
float xpos, ypos, xspeed, yspeed;
Ball(){
xpos = width/2;
ypos = height/2;
xspeed = 2;
yspeed = 2.5;
println("created new ball");
}
void display(){
background(100,100,100);
fill(143,154,189);
ellipseMode(CENTER);
ellipse(xpos, ypos, 50,50);
}
void movement(){
xpos = xpos + xspeed;
ypos = ypos + yspeed;
if (xpos > width - 25 || xpos < 25){
xspeed *= -1; }
if (ypos > height - 25 || ypos < 25){
yspeed *= -1; }
}
}
我觉得我的问题在于对象的启动或者&#34; void draw&#34;功能。我究竟做错了什么??
答案 0 :(得分:0)
调用background()
功能可清除屏幕上的所有内容。
您可以从background()
课程中的display()
功能内拨打Ball
。这意味着你画出每个球,但最后一个球清除了所有以前的球。
将该行移至主draw()
函数内。