gpt4 book ai didi

JavaFX - 为什么分数没有增加?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:55 25 4
gpt4 key购买 nike

the game

我刚刚添加了动画部分,现在每当我点击鸭子时它对分数没有任何影响,但是当我注释掉动画代码并且鸭子保持静止时,它会增加。

Full Code

动画:

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");
}
});

最佳答案

根据您在问题和评论中所说的内容:

when I comment out the animation code and the duck stays still, it increments just fine

Whenever I click the ducks initial position, it increments the score

我猜你的 ImageView(duck)的边界框没有更新。


From the ImageView docs :

This variable can be used to alter the location of a node without disturbing its layoutBounds, which makes it useful for animating a node's location.

这意味着图像本身在移动,duck 仍被认为处于其初始位置,因此 contains() 方法将不起作用。您必须找到另一种计算点击次数的方法


也许您可以使用 getTranslateX() contains() 的属性,它似乎会从几何鸭子中获取视觉鸭子的当前偏移量:

scene.setOnMouseClicked(event -> {
double rawMouseX = event.getX();
double rawMouseY = event.getY();

double normalizedMouseX = rawMouseX - duck.getTranslateX();
double normalizedMouseY = rawMouseY - duck.getTranslateY();

if (duck.contains(normalizedMouseX, normalizedMouseY)){
//increment score
incrementScore();
scoreDisplay.setText(""+score+"00");
}
});

免责声明:我没有使用 JavaFX 的经验,我主要依靠普通 Java 经验

关于JavaFX - 为什么分数没有增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38578503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com