Processing:Примеры/Объекты, хранящиеся в ArrayList
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Описание[1]
Этот скетч-пример демонстрирует, как использовать класс ArrayList для хранения меняющегося количества объектов. Класс ArrayList позволяет добавлять и удалять из него объекты.
Кликните по экрану, чтобы добавить новый прыгающий шарик.
Пример
ArrayList<Ball> balls;
int ballWidth = 48;
void setup() {
size(640, 360);
noStroke();
// создаем пустой ArrayList (в нем будут храниться объекты Ball):
balls = new ArrayList<Ball>();
// начинаем, добавляя один элемент:
balls.add(new Ball(width/2, 0, ballWidth));
}
void draw() {
background(255);
// При работе с массивом используется конструкция «balls.length»,
// а при работе с ArrayList – конструкция «balls.size()»;
// Размер объекта ArrayList может меняться.
// Обратите внимание, что мы начинаем проходить
// через элементы ArrayList с конца.
// Это из-за того, что нам нужно удалять элементы из ArrayList.
for (int i = balls.size()-1; i >= 0; i--) {
// Объект ArrayList не знает, что в нем хранится,
// поэтому нам приходится менять тип объекта, когда он выходит:
Ball ball = balls.get(i);
ball.move();
ball.display();
if (ball.finished()) {
// удалять элементы можно при помощи remove():
balls.remove(i);
}
}
}
void mousePressed() {
// добавляем в ArrayList новый шарик (по умолчанию в конец):
balls.add(new Ball(mouseX, mouseY, ballWidth));
}
// простой класс для прыгающего шарика:
class Ball {
float x;
float y;
float speed;
float gravity;
float w;
float life = 255;
Ball(float tempX, float tempY, float tempW) {
x = tempX;
y = tempY;
w = tempW;
speed = 0;
gravity = 0.1;
}
void move() {
// складываем гравитацию и скорость:
speed = speed + gravity;
// складываем скорость и координату Y:
y = y + speed;
// если шарик достигает земли, инвертируем скорость:
if (y > height) {
// заглушаем скорость:
speed = speed * -0.8;
y = height;
}
}
boolean finished() {
// шарик начинает таять в воздухе:
life--;
if (life < 0) {
return true;
} else {
return false;
}
}
void display() {
// показываем шарик:
fill(0,life);
//stroke(0,life);
ellipse(x,y,w,w);
}
}
См.также
Внешние ссылки
Примеры на Processing | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |