如何将JavaFX节点从一个位置移动(转换)到另一个位置?
如果将XY平面上的对象从一个位置移动到另一位置,则称为平移。您可以沿X轴到Y轴平移对象。
在JavaFX中,使用javafx.scene.transform.Translate类的对象可以将节点从一个位置转换到另一个位置。此类包含三个属性(双精度),分别表示所需位置与原始位置沿X,Y,Z平面的距离。
JavaFX中的每个节点都包含一个可观察的列表,以保存要应用于节点上的所有转换。您可以使用getTransforms()方法获取此列表。
要将节点从一个位置移动到另一位置-
实例化Translate类。
分别使用setX()
setY()
和setZ()方法设置要在XYZ平面中移动节点的距离。使用
getTransforms()
方法从节点(要移动的节点)获取转换列表。向其添加上面创建的比例对象。
将节点添加到场景。
示例
以下JavaFX示例演示了转换转换。它包含2D几何形状和两个滑块,分别表示x和y转换值。如果移动滑块,则对象将沿所选轴移动。
import javafx.application.Application;import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Orientation;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.paint.PhongMaterial;
import javafx.scene.shape.CullFace;
import javafx.scene.shape.DrawMode;
import javafx.scene.shape.Sphere;
import javafx.scene.transform.Translate;
import javafx.stage.Stage;
public class TranslateExample extends Application {
public void start(Stage stage) {
//绘制球体
Sphere sphere = new Sphere();
sphere.setRadius(50.0);
sphere.setCullFace(CullFace.BACK);
sphere.setDrawMode(DrawMode.FILL);
PhongMaterial material = new PhongMaterial();
material.setDiffuseColor(Color.BROWN);
sphere.setMaterial(material);
//设置水平移动的滑块
Slider slider1 = new Slider(0, 500, 0);
slider1.setOrientation(Orientation.VERTICAL);
slider1.setShowTickLabels(true);
slider1.setShowTickMarks(true);
slider1.setMajorTickUnit(150);
slider1.setBlockIncrement(150);
//创建翻译转换
Translate translate = new Translate();
//将转换链接到滑块
slider1.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue <?extends Number>observable, Number oldValue, Number newValue){
translate.setX((double) newValue);
translate.setY(0);
translate.setZ(0);
}
});
//设置垂直移动的滑块
Slider slider2 = new Slider(0, 200, 0);
slider2.setOrientation(Orientation.VERTICAL);
slider2.setShowTickLabels(true);
slider2.setShowTickMarks(true);
slider2.setMajorTickUnit(50);
slider2.setBlockIncrement(50);
//创建翻译转换
slider2.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue <?extends Number>observable, Number oldValue, Number newValue){
translate.setX(0);
translate.setY((double) newValue);
}
});
//将变换添加到球体
sphere.getTransforms().add(translate);
//创建窗格
BorderPane pane = new BorderPane();
pane.setBottom(new VBox(new Label("Translate along X-Axis"), slider1));
pane.setRight(new VBox(new Label("Translate along Y-Axis"), slider2));
pane.setLeft(sphere);
//准备场景
Scene scene = new Scene(pane, 595, 300);
stage.setTitle("Translate Example");
stage.setScene(scene);
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
输出结果
以上是 如何将JavaFX节点从一个位置移动(转换)到另一个位置? 的全部内容, 来源链接: utcz.com/z/359227.html