我有一个处理程序,应该显示100个环,每个环比前一个大一点。当我运行我的程序时,它会显示1个最大的铃声。我这个案例是从中间100px。
这是我的代码:
Car[] myCar = new Car[100];
void setup(){
size(500,500);
noFill();
for (int i = 0; i != myCar.length; i=i+1) {
myCar[i] = new Car(i);
}
}
void draw(){
for (int i = 0; i != myCar.length; i=i+1) {
myCar[i].drive();
myCar[i].display();
}
}
class Car{
int c;
Car(int c_){
c = c_;
}
void drive(){
c = c + 2;
}
void display(){
background(255);
noFill();
stroke(10);
ellipseMode(CENTER);
ellipse(width/2,height/2,1+c,1+c);
}
}
我的问题是:为什么只显示最大的戒指?
可能是那个
for (int i = 0; i != myCar.length; i=i+1) {
myCar[i] = new Car(i);
}
以某种方式不会将变量“i”赋给我的构造函数。 或者我只是愚蠢我不知道。
提前致谢。
答案 0 :(得分:1)
您没有看到它们,因为当您致电myCar[i].display()
时,该功能会清除屏幕上已有的所有内容并设置background(255)
,然后继续绘制一个响铃。这种情况一直在发生,你只能看到每一帧越来越大的一个戒指。
只需从background(255)
功能移除display()
,然后将其设为draw()
的第一行即可获得所需结果。
并非总是如此,但在大多数情况下,background()
或setup()
都会调用draw()
,因为它的作用是用颜色填充画布的每个像素,考虑一下。 / p>