У меня есть проект javafx, в котором есть круг и четыре кнопки (влево, вправо, вверх, вниз). При нажатии кнопки круг начнет двигаться в направлении кнопки. Если вы нажмете другую кнопку, круг должен изменить направление. Если вы нажмете на круг, он станет красным, а временная шкала остановится. Проблема заключается в том, что каждый раз, когда вы нажимаете кнопку во второй раз, она обновляет временную шкалу, но она создает другую временную шкалу, и круг становится пустым.
Я пытался остановить график каждый раз, когда кто-то нажимал кнопку, но не работал.
Timeline animation;
btnL.setOnAction(e -> {
if(check == false){
animation = new Timeline(new KeyFrame(Duration.millis(50), f-> moveBall('l')));
animation.setCycleCount(Timeline.INDEFINITE);
animation.play();
check = true;
}
});
btnR.setOnAction(e -> {
if(check == false){
animation = new Timeline(new KeyFrame(Duration.millis(50), f-> moveBall('r')));
animation.setCycleCount(Timeline.INDEFINITE);
animation.play();
check = true;
}
});
btnU.setOnAction(e -> {
if(check == false){
animation = new Timeline(new KeyFrame(Duration.millis(50), f->
moveBall('u')));
animation.setCycleCount(Timeline.INDEFINITE);
animation.play();
check = true;
}
});
btnD.setOnAction(e -> {
if(check == false){
animation = new Timeline(new KeyFrame(Duration.millis(50), f-> moveBall('d')));
animation.setCycleCount(Timeline.INDEFINITE);
animation.play();
check = true;
}
});
circle.setOnMouseClicked(e -> {
circle.setFill(Color.RED);
animation.stop();
check = false;
});
В конце я сделал логическую проверку, чтобы проверить, нажал ли кто-то кнопку и движется ли шар, любая другая кнопка ничего не сделает. Но я считаю, что есть более правильное решение.