在JavaFX中动态更改关键帧时间属性

时间:2009-11-29 01:13:50

标签: javafx timeline keyframe

我正在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{}

2 个答案:

答案 0 :(得分:1)

我已经看到了与此类似的情况(尽管在JavaFX 1.1.1中),我在JIRA报告了

如果我从脚本级别移动声明,我发现这已经解决了 - 在我的情况下,这是初始化函数(不是init {}块)。

但是我同意动态更改关键帧时间是一个坏主意。 显然不支持在您发布的代码段中使用“subtimelines”,而推荐的解决方案是使用JavaFX 1.2 SequentialTransitionParallelTransition时间轴。

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

答案 1 :(得分:0)

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