编写javafx脚本中的延迟,这可能吗?

时间:2013-03-26 11:49:11

标签: java javafx netbeans-6.9 javafx-1

好的,所以我有一个javafx的问题,netbeans 6.9.1版本(我知道它有点旧但我必须为学校的最后一个分配这样做)。所以对于分配我必须编码记忆游戏(集中)。现在我想编程延迟,所以当我翻转一张卡片时,该功能等待1.5秒,这样你就可以看到转动的卡片了。但是,当我进行一个等待1.5秒标记的while循环时,程序就会冻结,变量“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;
        */
        ..............................

非常感谢任何类型的帮助!

1 个答案:

答案 0 :(得分:0)

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

您可以将翻转卡片的代码放回Timeline以使JavaFX关注线程而不是您。

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