Javafx、TranslateTransition、动画

Javafx、TranslateTransition、动画,java,animation,javafx-2,Java,Animation,Javafx 2,我想用JavaFx创建一些形状,我想每个形状都有自己定义的TranslateTransition对象,我想在单击TranslateTransition播放的形状时使用它。我的代码: 形状类: package com; import javafx.animation.TranslateTransition; import javafx.beans.property.DoubleProperty; import javafx.event.Event; import javafx.event.Even

我想用JavaFx创建一些形状,我想每个形状都有自己定义的TranslateTransition对象,我想在单击TranslateTransition播放的形状时使用它。我的代码:

形状类:

package com;
import javafx.animation.TranslateTransition;
import javafx.beans.property.DoubleProperty;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.scene.Parent;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.util.Duration;

public class MShape  extends Parent{
private TranslateTransition Transition;
Circle circle;
DoubleProperty tox;
DoubleProperty toy;
public MShape(int i, int j) {
    circle = new Circle(20);
    circle.setCenterX(i);
    circle.setCenterY(j);
    circle.setFill(Color.RED);
    Transition= new TranslateTransition();
    Transition.setToX(350);
    Transition.setToX(375);
    Transition.setDuration(Duration.seconds(2));
    Transition.setNode(this.circle);
    this.getChildren().add(circle);
    circle.setOnMouseClicked(new EventHandler<Event>() {

        @Override
        public void handle(Event paramT) {
            Transition.play();
            System.out.println("hello");
        }
    });


}

}

问题是,当我按下形状时,它不会移动,请不要扩展父对象

这对我很有用:

public class Test extends Application {
    private Circle circle;
    private TranslateTransition transition;

    @Override
    public void start(Stage stage) throws Exception {

        /**
         * MShape
         */
        circle = new Circle(20);
        circle.setCenterX(100);
        circle.setCenterY(100);
        circle.setFill(Color.RED);


        transition = new TranslateTransition();
        transition.setToX(500);
        transition.setToX(500);

        transition.setDuration(Duration.seconds(5));
        transition.setNode(this.circle);

//      this.getChildren().add(circle);

        circle.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent paramT) {
                transition.play();
                System.out.println("hello  " + circle.getCenterX() + "  " + circle.getCenterY());

            }
        });

        VBox root = new VBox();
        Scene scene = new Scene(root, 800, 600);
        stage.setScene(scene);

        root.getChildren().add(circle);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
公共类测试扩展应用程序{
私人圈子;
私人翻译;
@凌驾
public void start(Stage)引发异常{
/**
*形状
*/
圆圈=新圆圈(20);
圆。setCenterX(100);
圆整度(100);
圆形。设置填充(颜色。红色);
转换=新的TranslateTransition();
转换。setToX(500);
转换。setToX(500);
transition.setDuration(Duration.seconds(5));
transition.setNode(这个圆);
//this.getChildren().add(圆);
circle.setOnMouseClicked(新的EventHandler(){
@凌驾
公共无效句柄(MouseEvent参数){
transition.play();
System.out.println(“hello”+circle.getCenterX()+”+circle.getCenterY());
}
});
VBox root=新的VBox();
场景=新场景(根,800600);
舞台场景;
root.getChildren().add(圆);
stage.show();
}
公共静态void main(字符串[]args){
发射(args);
}
}

谢谢tarrsalah,我通过这个transition.node(this)解决了我的问题;而不是transition.node(这个.circle);
public class Test extends Application {
    private Circle circle;
    private TranslateTransition transition;

    @Override
    public void start(Stage stage) throws Exception {

        /**
         * MShape
         */
        circle = new Circle(20);
        circle.setCenterX(100);
        circle.setCenterY(100);
        circle.setFill(Color.RED);


        transition = new TranslateTransition();
        transition.setToX(500);
        transition.setToX(500);

        transition.setDuration(Duration.seconds(5));
        transition.setNode(this.circle);

//      this.getChildren().add(circle);

        circle.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent paramT) {
                transition.play();
                System.out.println("hello  " + circle.getCenterX() + "  " + circle.getCenterY());

            }
        });

        VBox root = new VBox();
        Scene scene = new Scene(root, 800, 600);
        stage.setScene(scene);

        root.getChildren().add(circle);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}