Я новичок в JavaFX, и у меня есть (надеюсь) простой вопрос, с которым, возможно, кто-то может помочь мне.Я пытался искать ответы в Интернете, и, кажется, ничто не вписывается в то, что у меня есть.
Итак, в основном я пытаюсь сделать так, чтобы мяч (в моем случае это лицо) отскакивал от изменяющегося направления панели.всякий раз, когда он падает на стену - достаточно просто.Я не могу понять, почему стены вызывают только левую и верхнюю часть лица.(Другими словами, левая и верхняя стенки корректно вызывают отскок, но нижняя и правая стенки позволяют панели проходить через них, заставляя объект отскакивать, когда: 1. левая сторона лица касается правой стены или 2. верхняя стороналица касается нижней стены. Само лицо отскакивает в BorderPane, если это что-то меняет. Возможно, это логика моего кода, который я на самом деле получил из учебника.
Вот соответствующий код для этого вопроса:
public class BoxPane extends Pane {
private double radius;
private double x, y;
private double dx = 1;
private double dy = 1;
private Pane thisPane;
private Timeline animation;
public BoxPane(Pane pane)
{
getChildren().add(pane);
thisPane = pane;
radius = thisPane.getWidth()/2;
x = radius;
y = radius;
animation = new Timeline(new KeyFrame(Duration.millis(50), e -> moveBall()));
animation.setCycleCount(Timeline.INDEFINITE);
animation.play();
}
public void increaseSpeed()
{
animation.setRate(animation.getRate() + 0.1);
}
public void decreaseSpeed()
{
animation.setRate(animation.getRate()>0?animation.getRate() - 0.1 : 0);
}
protected void moveBall()
{
if((x < radius || x > getWidth() - radius))
{
dx *= -1;
}
if(y < radius || y > getHeight() - radius) {
dy *= -1;
}
x += dx;
y += dy;
thisPane.setTranslateX(x);
thisPane.setTranslateY(y);
}
}
Я могу попытаться объяснить, если что-то не ясно в моем коде. Но в основном я взял радиус объекта, который я передаю, исоздать анимацию с этим. У меня есть методы для увеличения и уменьшения скорости при нажатии клавиши (вызовы функций из другого файла Java), и, похоже, моя проблема в MoveBall (). Любая помощь очень ценится, спасибо!Прошу прощения, если это репост чего-то, на что уже был дан ответ, я не смог найти ничего, что помогло бы мнев моем конкретном случае.При необходимости я также могу предоставить скриншоты того, как на самом деле выглядит программа и где шар поворачивается.Спасибо!