我正在JavaFX中制作游戏,并实现了一个用于控制游戏速度的滑块。我有一个简单的滑块(javafx.scene.control.Slider),我将gameloop的time属性绑定到我从滑块获得的值。
滑块仅在增加gamespeed时才有效。如果我减少它,gameUpdate()将停止一段时间 - 取决于我减少多少。如果我在等待游戏赶上时增加滑块,游戏将再次继续。无论我等多久,有时候游戏似乎都没有赶上。
一般来说,改变关键帧时间是一个坏主意还是我忘了别的什么? 我一直在尝试更改canSkip变量,这似乎让游戏再次启动时运行得更顺畅,但对我没有多大帮助。
def gameLoop:Timeline = Timeline{
repeatCount: Timeline.INDEFINITE
keyFrames: [
KeyFrame{
time: bind Duration.valueOf(Config.REFRESH_RATE_NUMBER - gameSpeed)
action: function(){
gameUpdate();
}
}
]//keyFrames[]
}// Timeline{}
答案 0 :(得分:1)
我已经看到了与此类似的情况(尽管在JavaFX 1.1.1中),我在JIRA报告了
如果我从脚本级别移动声明,我发现这已经解决了 - 在我的情况下,这是初始化函数(不是init {}块)。
但是我同意动态更改关键帧时间是一个坏主意。 显然不支持在您发布的代码段中使用“subtimelines”,而推荐的解决方案是使用JavaFX 1.2 SequentialTransition和ParallelTransition时间轴。
阅读JIRA错误报告以获取更多信息,如果不能解决问题,请回复。
答案 1 :(得分:0)
我建议在函数中生成一系列关键帧,然后删除并重新设置关键帧。使用绑定时,似乎可能会在用户拖动滑块时尝试调整时间轴。