Доброго времени суток! Столкнулся с проблемой в реализации определенной механики в игре. Итак, у меня имеется класс,в котором я создаю поле для игры. В этом классе у нас есть двумерный массив Pane[5][18],который представляет из себя поле 5 на 18. Предположим,в Pane[2][2] я заношу определенный элемент. Для этого элемента у меня есть другой класс, (наследующийся от класса Pane) в котором я хочу реализовать механику движения на клетку вперед по таймеру. Собственно,вот функция:
public void startMove() {
timeline = new Timeline(new KeyFrame(Duration.seconds(moveSpeed), ev -> {
if(this.getParent()!=null) {
Pane parent = (Pane) this.getParent();
parent.getChildren().remove(this);
}
}));
timeline.setCycleCount(Animation.INDEFINITE);
timeline.play();
}
Собственно,проблема в том,я получил родительский Pane[2][2],и из него я удалить элемент могу. Но теперь мне нужно получить Pane[2][3],и занести в него мой элемент. Как это можно реализовать не передавая в функцию сам массив?
Вообще, тут в логике проблема. Элемент не должен сам себя удалять. Это должен делать контроллер, как по мне.
То есть, создайте интерфейс типо:
public interface LocationChanged {
void onLocationChanged(Pane pane);
}
Реализуйте его в вашем классе, который поле создаёт:
public MyController implements LocationChanged {
public void onLocationChanged(Pane pane) {
// этот ваш класс имеет доступ ко всему полю
// удаляйте из старой ячейки
// добавляйте в новую
}
}
При создании экземпляра вашей ячейки прокидывайте туда ссылку на ваш контроллер, а в методе startMove
вызывайте этот колбек.
public class MyPane extends Pane {
private LocationChanged mListener;
public MyPane (LocationChanged listener) {
mListener = listener;
}
public void startMove() {
timeline = new Timeline(new KeyFrame(Duration.seconds(moveSpeed), ev -> {
mListener.onLocationChanged(this);
}));
timeline.setCycleCount(Animation.INDEFINITE);
timeline.play();
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Собственно сабжВ отдельном классе парсю страницу,в другом создаю GUI
Пишу игру с помощью LibgdxЗапустив Android profiler, заметил что игра жрет приличное количество памяти
Есть Android-приложение, оно отправляет на сервер через Parsecom один из параметров в формате Date:
Добрый день, у меня возникла проблема с incompatible types error, проблема заключается в том что switch не считывает строки, хотя версия jdk 9