- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个我想用 JavaFX 制作的游戏的原型(prototype)。它需要角色/ Sprite 沿着弯曲的路径向前移动(基本上是向前跳跃到特定位置)。我尝试使用MoveTo(使用 Sprite 的ImageView的layoutX和layoutY值,硬编码)与CubicCurveTo和ArcTo来指定此路径,但是随后, Sprite 会跳转并从窗口下方开始动画,然后执行动画从该点开始,即使我的 Sprite 位于窗口中间。
我尝试将 MoveTo 设置为 0,但随后 Sprite 会跳转到其当前位置( Sprite 的左上角)附近稍微不同的位置,然后执行动画,直到窗口下方。据我所知,无论 MoveTo 位于何处,CubicCurveTo 和 ArcTo 最终坐标仍然相同。
我的一般问题是,这些路径元素的坐标系如何工作?具体来说,如何让我的 Sprite 以弯曲位置向前移动而不跳到窗口下方?
这是我的代码(位于 FXML Controller 类的initialize() 方法内):
/*
The root is a Pane with prefWidth = 960, prefHeight = 540
*/
public void initialize() {
/*
char1 is the ImageView of the sprite. layoutX = 270, layoutY = 290
*/
char1.setScaleX(-1);
final Path path = new Path();
path.getElements().add(new MoveTo(0, 0));
// these are rough numbers, based on the coordinate system that the layoutX and layoutY of the ImageView uses
// path.getElements().add(new CubicCurveTo(300, 200, 400, 200, 500, 290));
path.getElements().add(new ArcTo(100, 60, 40, 500, 290, true, true));
final PathTransition pathTransition = new PathTransition();
pathTransition.setDuration(Duration.millis(2000));
pathTransition.setNode(char1);
pathTransition.setPath(path);
pathTransition.setCycleCount(1);
pathTransition.setAutoReverse(true);
jumpButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
pathTransition.play();
}
});
}
最佳答案
所以,嗯,我解决了我自己的问题(?)。我发现这些 PathElements 使用相对于节点当前位置的坐标,并且变换基于节点的中心。因此,为了让我的 Sprite 向前跳跃,我的 CubicCurveTo 需要在两个控制点上具有负 y 坐标。至于我的 Sprite 跳跃的部分,因为它以指定点为中心(因为 ImageView 坐标值指的是它们的原点,即边界框的左上角,如果我没记错的话),我必须工作暂时围绕这个。至少我解决了最大的问题。
不过,我想知道是否有任何文档说明 PathElements 使用节点的相对位置来移动它。
关于java - PathTransition 没有像我想象的那样工作(使用 CubicCurveTo/ArcTo 和一般坐标的混淆),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60693433/
我正在尝试创建一个 JavaFx 桌面应用程序,并且我想绘制一些形状。为了绘制这个形状,我想使用贝塞尔三次曲线。我注意到在JavaFx中存在CubicCurveTo和CubicCurve。 JavaF
我正在制作一个我想用 JavaFX 制作的游戏的原型(prototype)。它需要角色/ Sprite 沿着弯曲的路径向前移动(基本上是向前跳跃到特定位置)。我尝试使用MoveTo(使用 Sprite
我是一名优秀的程序员,十分优秀!