Доброго времени суток! Столкнулся со следующей проблемой: Пишу игру на JavaFX. Реализую движение персонажа. В пример возьмем этот код:
public void start(Stage stage) {
double sHeight = Toolkit.getDefaultToolkit().getScreenSize().getHeight();
double sWidth = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
Pane root = new Pane();
Pane ground = new Pane();
ground.setMinSize(1500, 1500);
ground.setMaxSize(1500, 1500);
ground.setBackground(new Background(new BackgroundFill(Color.BLACK, CornerRadii.EMPTY, Insets.EMPTY)));
Pane player = new Pane();
player.setMinWidth(50);
player.setMinHeight(50);
player.relocate((sWidth / 2) - 25, (sHeight / 2) - 25);
player.setBackground(new Background(new BackgroundFill(Color.DARKGREEN, CornerRadii.EMPTY, Insets.EMPTY)));
ground.getChildren().addAll(player);
root.getChildren().addAll(ground);
Scene scene = new Scene(root, sWidth, sHeight);
PerspectiveCamera camera = new PerspectiveCamera(false);
camera.relocate(0, 0);
scene.setCamera(camera);
scene.setOnKeyPressed((KeyEvent ke) -> {
switch (ke.getCode()) {
case UP:
player.setLayoutY(player.getLayoutY() - 1);
camera.setLayoutY(camera.getLayoutY() - 1);
break;
case DOWN:
player.setLayoutY(player.getLayoutY() + 1);
camera.setLayoutY(camera.getLayoutY() + 1);
break;
case LEFT:
player.setLayoutX(player.getLayoutX() - 1);
camera.setLayoutX(camera.getLayoutX() - 1);
break;
case RIGHT:
player.setLayoutX(player.getLayoutX() + 1);
camera.setLayoutX(camera.getLayoutX() + 1);
break;
case I:
System.out.println("PX - " + player.getLayoutX());
System.out.println("PY - " + player.getLayoutY());
System.out.println();
System.out.println("Width - " + ground.getWidth());
System.out.println("Height - " + ground.getHeight());
System.out.println();
break;
}
});
stage.setScene(scene);
stage.setResizable(false);
stage.setY(0);
stage.setX(0);
stage.alwaysOnTopProperty();
stage.initStyle(StageStyle.UNDECORATED);
stage.show();
}
Если мы будем перемещаться в одну сторону,то со временем мы достигнем её предела,и пересечем его. Самое интересное,что размер Pane не изменится. Теперь,собственно вопрос - имеется ли какая-либо возможность ограничения перемещения дочернего объекта в родительском,опираясь на размеры родительского? Я понимаю,что можно через if ограничить,но существуют ли какие-либо другие способы сделать это? Так же,очень интересна логика вот этого момента,так как странно,что объект,который мы помещаем в другой объект,может пересекать границы родительского.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости