
我只是添加了动画部分,现在每当我单击鸭子时,它对得分没有任何影响,但是当我注释掉动画代码,鸭子保持不变时,它就会很好地增加。
全码
动画:
KeyValue start = new KeyValue(duck.translateXProperty(), 10);
KeyValue end = new KeyValue(duck.translateXProperty(), 400);
KeyFrame startF = new KeyFrame(Duration.ZERO, start);
KeyFrame endF = new KeyFrame(Duration.seconds(10), end);
Timeline tl = new Timeline(startF, endF);
tl.setCycleCount(Timeline.INDEFINITE);
tl.setAutoReverse(true);
tl.play();用于单击的事件处理程序:
scene.setOnMouseClicked(event -> {
        if (duck.contains(event.getX(), event.getY())){
            //increment score
            incrementScore();
            scoreDisplay.setText(""+score+"00");
        }
    });发布于 2016-07-25 23:44:39
您不需要计算归一化位置或鼠标X/Y坐标。您需要使用getBoundsInParent()方法:
        if (duck.getBoundsInParent().contains(event.getX(), event.getY())){
            //increment score
            incrementScore();
            scoreDisplay.setText(""+score+"00");
        }发布于 2016-07-26 09:37:38
将鼠标处理程序设置在鸭子上,而不是场景。
另外,使用pickOnBounds只在单击鸭子的像素时才会做出反应,而不是单击包围框。
duck.setPickOnBounds(false);
duck.setOnMouseClicked(event -> {
    incrementScore();
    scoreDisplay.setText(score + "00");
});https://stackoverflow.com/questions/38578503
复制相似问题