Динамическое изменение атрибута времени ключевых кадров в JavaFX - PullRequest
1 голос
/ 29 ноября 2009

Я делаю игру на 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{}

Ответы [ 2 ]

1 голос
/ 03 декабря 2009

Я видел ситуацию, довольно похожую на эту (хотя в JavaFX 1.1.1), о которой я сообщил в JIRA

Я обнаружил, что это было решено, если я переместил объявление с уровня скрипта - в моем случае это было в функцию инициализации (не блок init {}).

Однако я бы согласился, что динамическое изменение времени ключевого кадра - плохая идея. Использование «субтилайнов» в размещенном вами фрагменте, по-видимому, не поддерживается, и вместо этого рекомендуется использовать JavaFX 1.2 SequentialTransition и ParallelTransition шкалы времени.

Прочтите отчет об ошибке JIRA для получения дополнительной информации и, пожалуйста, напишите, если это не решит проблему.

0 голосов
/ 08 декабря 2009

Я бы предложил сгенерировать последовательность ключевых кадров в функции, затем удалить и заново установить ключевые кадры. С привязкой кажется, что он может попытаться отрегулировать временную шкалу, когда пользователь перетаскивает ползунок.

...