私は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{}