1

我正在用 JavaFX 制作游戏,并实现了一个用于控制游戏速度的滑块。我有一个简单的滑块(javafx.scene.control.Slider),我将游戏循环的时间属性绑定到我从滑块获得的值。

滑块仅在提高游戏速度时才真正起作用。如果我减少它,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{}
4

2 回答 2

1

我曾在JIRA中报告过与此非常相似的情况(尽管在 JavaFX 1.1.1 中)

我发现如果我将声明从脚本级别移动,则可以解决这个问题 - 在我的情况下,这是一个初始化函数(不是 init{} 块)。

但是,我同意动态更改关键帧时间是一个坏主意。显然不支持在您发布的片段中使用“子时间线”,建议的解决方案是使用 JavaFX 1.2 SequentialTransitionParallelTransition时间线。

阅读 JIRA 错误报告以获取更多信息,如果它不能解决问题,请回复。

于 2009-12-02T22:07:31.223 回答
0

我建议在函数中生成一系列关键帧,然后删除并重新设置关键帧。通过绑定,它似乎可能会在用户拖动滑块时尝试调整时间线。

于 2009-12-08T18:02:31.680 回答