1

好的,所以我对 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;
        */
        ..............................

任何类型的帮助将不胜感激!

4

1 回答 1

0

是踩踏问题。你不能等待在同一个线程上计算的东西。

您可以将翻转卡片的代码放入其中,Timeline以使 JavaFX 关心线程而不是您。

backflip : Timeline {
   repeatCount: 1
   keyFrames: KeyFrame {
        time: 1.5s
        action: function() {
           // here is code which flips card back
        }
   }
}
于 2013-03-28T12:29:42.023 回答