好的,所以我有一个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;
*/
..............................
非常感谢任何类型的帮助!
答案 0 :(得分:0)
这是一个问题。你不能等待在同一个线程上计算的东西。
您可以将翻转卡片的代码放回Timeline
以使JavaFX关注线程而不是您。
backflip : Timeline {
repeatCount: 1
keyFrames: KeyFrame {
time: 1.5s
action: function() {
// here is code which flips card back
}
}
}