2015-10-18 87 views
0

我想实现一个TranslateTransition到我的矩形,但它没有做任何事情。 这里是我的代码:TranslateTransition JavaFX

primaryStage.setTitle("AnimationTest"); 
    Group group = new Group(); 

    Rectangle rect = new Rectangle(0,0,100,100); 
    group.getChildren().add(rect); 
    TranslateTransition transition =new TranslateTransition(Duration.millis(1000),rect); 
     transition.setByX(100); 

    Button button = new Button("StartAnimation"); 
     button.setOnAction((e)->{ 
      transition.play(); 
     }); 
    VBox layout = new VBox(); 
    layout.getChildren().addAll(group, button); 
    Scene scene = new Scene(layout, 600, 600); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 

回答

0

根据对Group的文档:

A组将在其子

换句话说集体范围,为矩形移动时,组的坐标系调整以适应其包含的所有内容。由于它包含的唯一东西是矩形,所以矩形相对于组的容器保持固定。

使用Pane代替Group

primaryStage.setTitle("AnimationTest"); 
Pane pane = new Pane(); 

Rectangle rect = new Rectangle(0,0,100,100); 
pane.getChildren().add(rect); 
TranslateTransition transition =new TranslateTransition(Duration.millis(1000),rect); 
    transition.setByX(100); 

Button button = new Button("StartAnimation"); 
    button.setOnAction((e)->{ 
     transition.play(); 
    }); 
VBox layout = new VBox(); 
layout.getChildren().addAll(pane, button); 
Scene scene = new Scene(layout, 600, 600); 
primaryStage.setScene(scene); 
primaryStage.show(); 
+0

谢谢!现在工作完美。 – XPenguen