4

我对 javafx 很陌生,所以我想在这里学习,所以请保持理智,不要拒绝我的问题,我真的很感谢任何帮助,谢谢!

我想知道如何移动一个对象,比如说这个圆圈在不同的事件上,比如按键或鼠标点击、鼠标移动等等。

Circle circle = new Circle();
circle.setCenterX(100.0f);
circle.setCenterY(100.0f);
circle.setRadius(50.0f);

我是否需要使用我在 javafx 网站教程中看到的那个 KeyFrame 东西,或者它是如何工作的?

老实说,如果我没有感到如此失落,我就不会在这里问这个问题。所以要明确一点:使用事件移动我创建的对象的代码是什么?

编辑:通过移动它,我的意思是,按向上键,它向上移动几个像素,可能用另一个键对其进行变换,或者单击场景中的某个位置并使其立即移动到那里或以一定的速度移动到那里。我不必像使用 html5 画布那样重绘它,我希望,对吧?

4

1 回答 1

17

我不必像使用 html5 画布那样重绘它,我希望,对吧?

如果您使用的是标准JavaFX 场景图而不是JavaFX 画布,则不会。

我想知道如何移动一个对象,比如说这个圆圈在不同的事件上,比如按键或鼠标点击、鼠标移动等等

移动Shape有三种方法:

  1. 您可以调整形状的几何形状(例如圆的centerX /centerY 属性)。
  2. 您可以调整形状的布局(例如它的layoutX /layoutY 属性)。
  3. 您可以调整形状的平移(例如它的translateX /translateY 属性)。

您可以将布局视为对象的起始位置;即它通常应该在它的父组的上下文中。您可以将其平移变换视为对象的临时位置(通常在对象被动画时使用)。

如果您使用的是布局窗格,例如VBoxTilePane,那么布局窗格将为您处理设置子节点的布局坐标。如果您使用的是简单的Group或普通的PaneRegion,那么您有责任为子节点设置正确的布局值。

要侦听事件,请在NodesScenes上设置事件处理程序

这是一个演示上述内容的小型示例应用程序。它将要移动的对象放置在 a 内,并根据各种事件Group修改对象在 a 内的位置。Group

运动事件

于 2013-01-19T01:05:18.603 回答