我有一组移动的形状,它们的大小在增长,当它达到一定的大小时,我希望它的移动速度(秒)增加,但是我不知道如何更新我的KeyFrame的秒变量。秒变量是我最初在开始方法中设置为0.2的一个全局变量。我将组的长度存储在一个ArrayList中,这样我就可以做一些类似的事情
if(groupList.size() >= 3 && groupList.size() <= 8){
seconds = 0.15;
}
if(groupList.size() >= 9 && groupList.size() <= 14){
seconds = 0.09;
}等等,上面的代码在我的开始方法中。我的KeyFrame有一个名为move的方法:
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();
}发布于 2018-12-06 22:31:52
在if语句中,我在move方法调用之前和在更改秒变量之后添加了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();
}https://stackoverflow.com/questions/53659555
复制相似问题