Je suis en train de détecter la collision entre un objet et ImageView un rectangle dans JavaFX. Le code ci-dessous ne fonctionne pas et je ne sais pas pourquoi. Rien ne se passe lorsque les objets se chevauchent. Le fichier original de l'image est un png si cela fait une différence. L'objet imageview est déplacé avec des flèches et le rectangle se déplace également avec TranslateTranslation.Comment détecter une collision dans JavaFX entre le rectangle et l'objet imageview
public void collision(ImageView a, Rectangle b) {
if (a.getBoundsInLocal().intersects(b.getBoundsInLocal())) {
b.setY(-100);
score++;
}
}
imageview Code mouvement:
playg.setOnKeyPressed(new EventHandler<KeyEvent>(){
public void handle(KeyEvent event) {
if(event.getCode() == KeyCode.RIGHT) {
basket.setLayoutX(basket.getLayoutX() + 15);
brect.setLayoutX(basket.getLayoutX() + 15);
} else if (event.getCode() == KeyCode.LEFT) {
basket.setLayoutX(basket.getLayoutX() - 15);
brect.setLayoutX(basket.getLayoutX() - 15);
}
}
});
rectangle Code d'animation:
TranslateTransition tt = new TranslateTransition(Duration.seconds(4), rect2);
tt.setByY(800f);
tt.setCycleCount(INDEFINITE);
tt.play();
J'ai essayé, mais il ne fonctionne toujours pas –
Hmm ... Je changé un de mes rectangles à un 'ImageView' et encore travaillé pour moi (j'ai même utilisé un fichier .png). Même en regardant le nouveau code que vous avez posté, je ne suis pas très différent. Quand vérifiez-vous les collisions dans votre code? – Slaw
En fait, j'ai découvert que la fonction n'est appelée qu'une seule fois, lorsque la fenêtre s'ouvre. Le getBoundInParent() a travaillé pour cela une fois, merci. Savez-vous comment obtenir le programme pour vérifier en permanence la collision? J'ai appelé la fonction une fois dans la méthode start() –