我想垂直移动String,转换为Text然后实现 进入翻译过渡。当我开始它时,什么也没发生。知道怎么会这样。 谢谢。
代码:
公共类Pohyb扩展了Application {
@Override public void start(Stage primaryStage) { Group root = new Group(); Scene scene = new Scene(root, 300, 300); scene.setFill(Paint.valueOf("B0B0B0")); primaryStage.setTitle("Canvas"); primaryStage.setScene(scene); startTransition(scene); primaryStage.show(); } /** * @param args the command line arguments */ public static void main(String[] args) { launch(args); } private void startTransition(Scene scene) { //OBDELNÍK final Rectangle rect = new Rectangle(32, 32); rect.setLayoutX((300/2)- (32/2)); rect.setLayoutY((300/2)- (32/2)); rect.setFill(Paint.valueOf("ffffff")); Text text = new Text("A"); text.setLayoutX(145); text.setLayoutY(155); Group root = (Group) scene.getRoot(); root.getChildren().add(rect); root.getChildren().add(text); final TranslateTransition translate = new TranslateTransition(new Duration(1000)); translate.setNode(text); translate.setFromY(text.getLayoutY()); translate.setToX(text.getLayoutY() + 100); translate.setAutoReverse(true); translate.setCycleCount(5); translate.play(); } }
答案 0 :(得分:2)
如果你增加舞台的大小,你会看到你的动画有效,但Y坐标高于预期。
如果查看TranslateTransition
的javadoc,它会声明它默认使用translateY
属性。所以这将有效:
final TranslateTransition translate = new TranslateTransition(new Duration(1000));
translate.setNode(text);
translate.setFromY(text.getTranslateY());
translate.setToY(text.getTranslateY()+100);
translate.setAutoReverse(true);
translate.setCycleCount(5);
translate.play();
这也可以,因为如果没有提供byY
,我会使用toY
属性:
final TranslateTransition translate = new TranslateTransition(new Duration(1000));
translate.setNode(text);
translate.setByY(100);
translate.setAutoReverse(true);
translate.setCycleCount(5);
translate.play();