Я учу Java через обработку.
Код выполняет следующие действия.
1) Программа установки вызывается и инициализируется окно размером 700 300.
2) Ряд точек инициализируется с помощью цикла for в настройке и задаются случайные скорости.
3) Функция рисования вызывается автоматически. Это функция зацикливания. Он вызывается снова и снова. Каждый раз он заполняет пространство черным прямоугольником и рисует все круги вместе с обновлением их позиций.
4) Поскольку команда rect () очищает экран каждый раз, когда вызывается draw (), она должна показывать только одну частицу и никаких следов. Но это так.
Я наткнулся на один из руководств, и код выглядит следующим образом
Spot[] spots; // Declare array
void setup() {
size(700, 100);
int numSpots = 70; // Number of objects
int dia = width/numSpots; // Calculate diameter
spots = new Spot[numSpots]; // Create array
for (int i = 0; i < spots.length; i++) {
float x = dia/2 + i*dia;
float rate = random(0.1, 2.0);
// Create each object
spots[i] = new Spot(x, 50, dia, rate);
}
noStroke();
}
void draw() {
fill(0, 12);
rect(0, 0, width, height);
fill(255);
for (int i=0; i < spots.length; i++) {
spots[i].move(); // Move each object
spots[i].display(); // Display each object
}
}
class Spot {
float x, y; // X-coordinate, y-coordinate
float diameter; // Diameter of the circle
float speed; // Distance moved each frame
int direction = 1; // Direction of motion (1 is down, -1 is up)
// Constructor
Spot(float xpos, float ypos, float dia, float sp) {
x = xpos;
y = ypos;
diameter = dia;
speed = sp;
}
void move() {
y += (speed * direction);
if ((y > (height - diameter/2)) || (y < diameter/2)) {
direction *= -1;
}
}
void display() {
ellipse(x, y, diameter, diameter);
}
}
Он производит такой вывод:
![enter image description here](https://i.stack.imgur.com/agEi3.png)
Я не понимаю, почему это создаст эти следы, и эти следы просто исчезнут. Интуитивно, из-за
должна быть видна только одна точка
for (int i=0; i < spots.length; i++) {
spots[i].move(); // Move each object
spots[i].display(); // Display each object
}
Пожалуйста, укажите мне строку кода, которая делает это? Понятия не имею.
Ссылка: https://processing.org/tutorials/arrays/
@ Массивы: Кейси Реас и Бен Фрай