我正在尝试测试,看看我的子弹是否击中了敌人,如果没有的话,我会将它从窗格和项目列表中删除。但是,我不知道如何在动画中查找子弹的位置。我该怎么做呢?谢谢!
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;发布于 2017-04-20 07:07:59
只需将侦听器添加到其boundsInParent属性即可。侦听器将在每次边界更改时被调用,即每次它移动时:
bullet.boundsInParentProperty().addListener((obs, oldBounds, newBounds) -> {
double centerX = newBounds.getMinX() + newBounds.getWidth() /2 ;
// ... etc
});请注意,TranslateTransition通过更改节点的translateX和translateY属性来工作:因此圆的centerX和centerY属性在动画过程中不会更改。
https://stackoverflow.com/questions/43507422
复制相似问题