在JavaFX中使用String转换转换

时间:2014-12-08 10:47:59

标签: text javafx translate

我想垂直移动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();
}    }

1 个答案:

答案 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();