javafx에서 ImageView 객체와 Rectangle 간의 충돌을 감지하려고합니다. 아래 코드는 작동하지 않으며 이유가 확실하지 않습니다. 객체가 서로 겹치면 아무 일도 일어나지 않습니다. 이미지의 원래 파일은 차이가 나는 경우 png입니다. 이미지 뷰 객체는 화살표로 이동하고 직사각형은 TranslateTranslation으로 이동합니다.사각형과 이미지 뷰 객체 사이의 javafx 충돌을 감지하는 방법
public void collision(ImageView a, Rectangle b) {
if (a.getBoundsInLocal().intersects(b.getBoundsInLocal())) {
b.setY(-100);
score++;
}
}
이미지 뷰 이동 코드 :
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);
}
}
});
사각형 애니메이션 코드 :
TranslateTransition tt = new TranslateTransition(Duration.seconds(4), rect2);
tt.setByY(800f);
tt.setCycleCount(INDEFINITE);
tt.play();
나는 그것을 시도했지만 여전히 작동하지 않았다. –
흠 ... 나는 나의 사각형 중 하나를'ImageView'로 바꾸었고, 여전히 나를 위해 일했다 (나는 심지어 png 파일을 사용했다). 당신이 게시 한 새로운 코드를 보더라도 나는별로 다르지 않습니다. 코드에서 충돌을 검사하는 시점은 언제입니까? – Slaw
사실,이 함수는 창이 열릴 때 한 번만 호출된다는 사실을 알게되었습니다. getBoundInParent()는 그 동안 한 번만 작동했습니다. 감사합니다. 프로그램이 지속적으로 충돌을 확인하는 방법을 알고 있습니까? start() 메서드에서 한 번 함수를 호출했습니다. –