2017-04-19 28 views
0

我想測試一下,看看我的子彈是否擊中了敵人,如果它不生病,請將其從窗格和子彈列表中刪除。但是,我不知道如何在子彈處於動畫的中間時尋找子彈的位置。 我該怎麼做?謝謝!如何在轉換過程中獲取對象位置?

case S: 
       Circle bullet = new Circle(5); 
       bullet.setLayoutX(guns.getGun1().getLayoutX() + guns.getGun1().getWidth()); 
       bullet.setLayoutY(guns.getGun1().getLayoutY()); 
       bullets.add(bullet); 
       stage1Pane.getChildren().add(bullet); 
       TranslateTransition bulletMovement = new TranslateTransition(Duration.seconds(3),bullet); 
       bulletMovement.fromXProperty().bind(guns.getGun1().translateXProperty()); 
       bulletMovement.fromYProperty().bind(guns.getGun1().translateYProperty()); 
       bulletMovement.toXProperty().bind(guns.getGun1().translateXProperty().add(1000)); 
       bulletMovement.toYProperty().bind(guns.getGun1().translateYProperty()); 
       bulletMovement.play(); 

        if (bullet.getCenterX() == enemy.getEnemyBody().getLayoutX()) 
        { 
         bulletMovement.stop(); 
         enemy.getEnemyLegs().setLayoutX(300); 
        } 

       bulletMovement.setOnFinished(i->{ 
        System.out.println(bullet.getCenterX() + " " + enemy.getEnemyBody().getLayoutX()); 
        bullets.remove(bullet); 
        stage1Pane.getChildren().remove(bullet); 
       }); 
       break; 

回答

0

您可以將偵聽程序添加到其boundsInParent屬性中。監聽器將邊界變化調用每一次,即每一次它的動作:

bullet.boundsInParentProperty().addListener((obs, oldBounds, newBounds) -> { 
    double centerX = newBounds.getMinX() + newBounds.getWidth() /2 ; 
    // ... etc 
}); 

注意,TranslateTransition作品通過改變節點的translateXtranslateY屬性:所以圓的centerXcenterY性質不會改變在動畫期間。

相關問題