JavaFx立即显示图像

时间:2015-03-21 10:37:40

标签: java javafx

我正在制作记忆卡游戏。

我希望能够抓住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());
}

3 个答案:

答案 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()

获取MouseEvent的点击次数
if(mouseEvent.getClickCount() == 2) {
    // your code
}

如果您只是在寻找Primary Button次点击,

if(mouseEvent.getButton().equals(MouseButton.PRIMARY)){
     if(mouseEvent.getClickCount() == 2) {
         // your code
     }
}