Программирование задержки в сценарии javafx, возможно ли это?

Итак, у меня проблема с javafx, версией netbeans 6.9.1 (я знаю, что она немного устарела, но мне нужно сделать это для окончательного задания для школы). Итак, для задания я должен написать игру памяти (концентрация). Теперь я хочу запрограммировать задержку, поэтому, когда я переворачиваю карту, функция ждет около 1,5 секунд, чтобы вы могли видеть перевернутую карту. однако, когда я делаю цикл while, чтобы дождаться 1,5-секундной отметки, программа просто зависает, и переменная «time02» не будет обновляться. Затем я должен вручную закрыть программу через диспетчер задач, потому что она просто зависает. Вот фрагмент кода с временной шкалой и небольшой фрагмент функции. Я также включил временную шкалу для часов, которая достаточно странно обновляет переменную «time01». Я также помещаю код задержки в комментарий.

clock = Timeline {
    repeatCount: Timeline.INDEFINITE
    keyFrames: KeyFrame {
        time: 0.1s
        action: function() {
            updateclock();
        }
    }
}
function updateclock() {
    time01 = time01 + 1;
    text2.content = "Tijd: {time01 / 10}";
}


/*
delay = Timeline {
    repeatCount: Timeline.INDEFINITE
    keyFrames: KeyFrame {
        time: 0.1s
        action: function() {
            updatedelay();
        }
    }
}

function updatedelay() {
    time02 = time02 + 0.1;
}
*/

function control() {
    if (counter == 2) {
        /*                                    
        while (time02 < 1.2) {
            delay.play();
        }
        delay.stop();
        time02 = 0;
        */
        ..............................

Любая помощь будет очень признательна!


person user2211347    schedule 26.03.2013    source источник


Ответы (1)


Это проблема протектора. Вы не можете ждать чего-то, что вычисляется в том же потоке.

Вы можете поместить код, который переворачивает карту обратно в Timeline, чтобы JavaFX заботился о многопоточности вместо вас.

backflip : Timeline {
   repeatCount: 1
   keyFrames: KeyFrame {
        time: 1.5s
        action: function() {
           // here is code which flips card back
        }
   }
}
person Sergey Grinev    schedule 28.03.2013