Написать своё событие вместо функции
Пишу танчики на JavaFX. Цикл сверяет на пересечение узлов препятствий и танка по Y-координате. Суть в том, что нужно написать собственное событие столкновения объектов танка и препятствий вместо используемой функции (intersects).
for (GameObject platform : PlayField.platforms) {
if (getImage().getBoundsInParent().intersects(platform.getImage().getBoundsInParent()))
if (moveDown) {
if (imageView.getTranslateY() + (PlayField.BRICK_SIZE - 14) == platform.getImage().getTranslateY()) {
imageView.setTranslateY(imageView.getTranslateY() - 1);
return;
}
} else {
if (imageView.getTranslateY() == (PlayField.BRICK_SIZE) + platform.getImage().getTranslateY()) {
imageView.setTranslateY(imageView.getTranslateY() + 1);
return;
}
}
}
Сложность в том, что не знаю как. Попробовал сделать пустой класс и интерфейс.
interface EventCollisionListener {
void eventListener (EventCollision e);
}
public class EventCollision {
public final void addEventCollisionListener(EventCollisionListener listener){
}
}
Конечный код должен выглядеть как-то так, но тут отсутствует проверка на пересечение узлов препятствий и танка
for (GameObject platform: PlayField.platforms) {
EventCollision eventCollision = new EventCollision();
eventCollision.addEventCollisionListener(new EventCollisionListener() {
@Override
public void eventListener(EventCollision e) {
if (moveRight) {
if (imageView.getTranslateX() + (PlayField.BRICK_SIZE - 14) == platform.getImage().getTranslateX()) {
imageView.setTranslateX(imageView.getTranslateX() - 1);
return;
}
} else {
if (imageView.getTranslateX() == (PlayField.BRICK_SIZE) + platform.getImage().getTranslateX()) {
imageView.setTranslateX(imageView.getTranslateX() + 1);
return;
}
}
}
});
}