Доброго времени суток! Столкнулся со следующей проблемой: Пишу игру на 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 ограничить,но существуют ли какие-либо другие способы сделать это? Так же,очень интересна логика вот этого момента,так как странно,что объект,который мы помещаем в другой объект,может пересекать границы родительского.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Дело в том что я до этого удалял и обновлял записи в Realm таким образом: