我有这段代码
// If we click on an unfolded card
if (card.clicked == false) {
clicksCount++;
clickedCards[clicksCount - 1] = card;
card.showCardImage();
if (clicksCount == 2) {
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Thread.currentThread().interrupt();
}
// Loop through clicked cards and if they don't have the
// same ID fold them
if (clickedCards[0].cardID != clickedCards[1].cardID) {
for (int k = 0; k < clickedCards.length; k++) {
clickedCards[k].setDefaultIcon();
clickedCards[k].clicked = false;
}
failedAttempts.setText("Failed Attempts: "
+ ++failedCount);
}
attemptsCount++;
attempts.setText("Attempts " + attemptsCount);
clicksCount = 0; // reset click counter
}
}
这是我的pexeso游戏的功能。第一张卡显示卡的图像很好,但是当我第二次点击时它没有显示它的图像。它只等待然后折叠第一张卡。
我知道这是因为睡了线程但不知道该怎么办。
我会很高兴任何想法或建议。
答案 0 :(得分:1)
我猜这是一个Swing GUI(你永远不会告诉我们)。如果是这样,那么你是对的:在Swing事件线程上调用Thread.sleep(...)
将使整个GUI进入休眠状态,包括所有GUI绘图。而是使用摆动定时器设置为1000毫秒的延迟。在Timer的ActionListener中,您将把卡更改回原始卡。您将通过setter方法setRepeats(false)
告诉计时器不要重复。