首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaFX -为什么分数不增加?

JavaFX -为什么分数不增加?
EN

Stack Overflow用户
提问于 2016-07-25 22:43:43
回答 2查看 722关注 0票数 3

我只是添加了动画部分,现在每当我单击鸭子时,它对得分没有任何影响,但是当我注释掉动画代码,鸭子保持不变时,它就会很好地增加。

全码

动画:

代码语言:javascript
运行
复制
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();

用于单击的事件处理程序:

代码语言:javascript
运行
复制
scene.setOnMouseClicked(event -> {
        if (duck.contains(event.getX(), event.getY())){
            //increment score
            incrementScore();
            scoreDisplay.setText(""+score+"00");
        }
    });
EN

回答 2

Stack Overflow用户

发布于 2016-07-25 23:44:39

您不需要计算归一化位置或鼠标X/Y坐标。您需要使用getBoundsInParent()方法:

代码语言:javascript
运行
复制
        if (duck.getBoundsInParent().contains(event.getX(), event.getY())){
            //increment score
            incrementScore();
            scoreDisplay.setText(""+score+"00");
        }
票数 1
EN

Stack Overflow用户

发布于 2016-07-26 09:37:38

将鼠标处理程序设置在鸭子上,而不是场景。

另外,使用pickOnBounds只在单击鸭子的像素时才会做出反应,而不是单击包围框。

代码语言:javascript
运行
复制
duck.setPickOnBounds(false);
duck.setOnMouseClicked(event -> {
    incrementScore();
    scoreDisplay.setText(score + "00");
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38578503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档