我有一组移动的形状,它们的大小会增加,当形状达到一定大小时,我希望它的移动速度(秒)增加,但是我不知道如何更新KeyFrame的seconds变量。 seconds变量是一个全局变量,我最初在start方法中将其设置为0.2。我将组的长度存储在ArrayList中,所以我会做类似
的操作if(groupList.size() >= 3 && groupList.size() <= 8){
seconds = 0.15;
}
if(groupList.size() >= 9 && groupList.size() <= 14){
seconds = 0.09;
}
等上面的代码在我的start方法中。我在名为move的方法中安装了KeyFrame:
public void move(){
Timeline timeline = new Timeline();
KeyFrame frame = new KeyFrame(Duration.seconds(seconds), e -> {
//bunch of if statements for game logic
});
timeline.setCycleCount(Timeline.INDEFINITE);
timeline.getKeyFrames().add(keyFrame);
timeline.play();}
所以在我的启动方法中,我按以下顺序进行操作:
gameStart();
move();
if(groupList.size() >= 3 && groupList.size() <= 8){
seconds = 0.15;
move();
}
if(groupList.size() >= 9 && groupList.size() <= 14){
seconds = 0.09;
move();
}
答案 0 :(得分:0)
在if语句中,我在move方法调用之前以及更改seconds变量之后添加了timeline.stop()和timeline.getKeyFrames()。clear()!向@MadProgrammer大喊解决方案!
if(groupList.size() >= 3 && groupList.size() <= 8){
seconds = 0.15;
timeline.stop();
timeline.getKeyFrames().clear();
move();
}
if(groupList.size() >= 9 && groupList.size() <= 14){
seconds = 0.09;
timeline.stop();
timeline.getKeyFrames().clear();
move();
}