Voici mon code suivant:Comment ne pas laisser mon image sortir de scène
public void start(Stage primaryStage) throws Exception {
Pane root = new Pane();
Scene scene = new Scene(root, 500, 500, Color.RED);
ImageView dice = new ImageView(new Image(getClass().getResourceAsStream("dice.jpeg")));
dice.setX(0);
dice.setY(300);
root.getChildren().add(dice);
scene.setOnKeyPressed(e -> {
if (dice.getX() >= 0 && dice.getX() <= 500) {
switch (e.getCode()) {
case RIGHT:
dice.setX(dice.getX() + KEYBOARD_MOVEMENT_DELTA);
break;
case LEFT:
dice.setX(dice.getX() - KEYBOARD_MOVEMENT_DELTA);
break;
}
}
});
primaryStage.setScene(scene);
primaryStage.show();
}
Dans mon code, mon image dice
peut se déplacer à gauche et à droite, mais je ne veux pas aller à l'extérieur de la scène. Je veux qu'il ne bouge pas une fois qu'il a atteint la fin de la scène à la fois à gauche et à droite. J'ai essayé de le faire avec l'instruction if
, mais cela ne fonctionne pas. Est-il possible que je peux arrêter mon image dice
pour ne pas sortir de la scène? Toute aide est appréciée!
où vous avez la x.pos() <500 et que les tests que vous avez fait besoin d'ajouter la largeur de x sur le côté gauche de l'inégalité –
@BenWebb vous peut me montrer comment s'il vous plaît de le faire? Je n'ai pas obtenu –
Je ne suis pas vraiment sûr sur la base de code de JavaScript mais ce serait quelque chose comme dice.getX() + dice.width()/2> = 500. C'est parce que dice.getX() ne le fait pas renvoie le point sur l'image la plus proche de la bordure. Je ne suis pas sûr de la direction exacte des inégalités (>) et de l'ordre des opérations, vous devrez donc essayer de changer les côtés des expressions. Cela devrait trouver la réponse que vous cherchez –