我正在制作记忆卡游戏。
我希望能够抓住2次点击,显示它们然后进行比较。
我试图实现这一点,但它不能按照我想要的方式工作。我写的代码等待两次点击,显示第一张卡,而且秒卡永远不会显示,因为当它有2张卡时会立即显示它们,如果它们不相同则会删除这两张卡。
EventHandler<MouseEvent> keyEventHandler =
new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
clickedCards(event);
if (klickade.size() == 2) {
boolean isSame = CardsAreSame();
if (isSame) {
firstMemoryCard.setPair(Boolean.TRUE);
secoundMemoryCard.setPair(Boolean.TRUE);
klickade.clear();
} else {
firstMemoryCard.setGraphic(firstMemoryCard.getImagEFaceDown());
secoundMemoryCard.setGraphic(secoundMemoryCard.getImagEFaceDown());
klickade.clear();
}
}
}
};
public void clickedCards(MouseEvent event) {
MemoryCard memoryCard = (MemoryCard) event.getSource();
klickade.add(memoryCard);
memoryCard.setGraphic(memoryCard.getImageFaceUp());
System.out.println(klickade.size());
}
答案 0 :(得分:1)
我认为您只是在询问如何在显示用户猜测的结果之前延迟代码。
最简单的方法是使用PauseTransition
:
if (klickade.size() == 2) {
PauseTransition pause = new PauseTransition(Duration.seconds(1));
pause.setOnFinished(event -> {
boolean isSame = CardsAreSame();
if (isSame) {
firstMemoryCard.setPair(Boolean.TRUE);
secoundMemoryCard.setPair(Boolean.TRUE);
klickade.clear();
} else {
firstMemoryCard.setGraphic(firstMemoryCard.getImagEFaceDown());
secoundMemoryCard.setGraphic(secoundMemoryCard.getImagEFaceDown());
klickade.clear();
}
});
pause.play();
}
答案 1 :(得分:0)
要检查点击次数,您可以使用MouseEvent mouseEvent并添加逻辑
<强> mouseEvent.getClickCount()强>
答案 2 :(得分:0)
您可以使用getClickCount()
if(mouseEvent.getClickCount() == 2) {
// your code
}
如果您只是在寻找Primary Button
次点击,
if(mouseEvent.getButton().equals(MouseButton.PRIMARY)){
if(mouseEvent.getClickCount() == 2) {
// your code
}
}