2017-01-21 15 views
0

を作るために、私は、ノードがこのパスを追従させるためにしようとしている:ArcToはフィレット形式のパス

enter image description here

しかし、私は実際にそれが動作するようになって苦労しています。現在、私はそれがこれをやって持って:

enter image description here

誰もが適切にこの仕事を作る方法を知っていますか?ここに私の現在のコードは次のとおりです。

import javafx.animation.PathTransition; 
import javafx.animation.Transition; 
import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.layout.Pane; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.ArcTo; 
import javafx.scene.shape.Circle; 
import javafx.scene.shape.MoveTo; 
import javafx.scene.shape.Path; 
import javafx.stage.Stage; 
import javafx.util.Duration; 

public class Test extends Application { 
    public void start(Stage primaryStage) throws Exception { 
     double fromX = 50; 
     double fromY = 400; 
     double toX = 300; 
     double toY = 300; 

     Circle node = new Circle(10); 

     MoveTo path1 = new MoveTo(); 
     path1.setX(fromX); 
     path1.setY(fromY); 
     ArcTo path2 = new ArcTo(); 
     path2.setX(toX); 
     path2.setY(toY); 
     path2.setRadiusX(.5); 
     path2.setRadiusY(1.0); 
     path2.setXAxisRotation(45.0); 
     path2.setSweepFlag(true); 
     //path2.setLargeArcFlag(true); 
     Path path = new Path(path1, path2); 
     path.setStroke(Color.DODGERBLUE); 
     path.getStrokeDashArray().setAll(5d, 5d); 
     PathTransition secondMove = new PathTransition(Duration.seconds(2), path, node); 
     secondMove.setCycleCount(Transition.INDEFINITE); 

     Pane content = new Pane(node, path); 
     primaryStage.setScene(new Scene(content, 600, 600)); 
     primaryStage.show(); 

     secondMove.play(); 
    } 
} 

答えて

0

私が最初の場所でそれを使用していたはずですが、私はそれがQuadCurveToではなくArcToを使用して動作するようになった:

enter image description here

import javafx.animation.PathTransition; 
import javafx.animation.Transition; 
import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.layout.Pane; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.*; 
import javafx.stage.Stage; 
import javafx.util.Duration; 

public class Test extends Application { 
    public void start(Stage primaryStage) throws Exception { 
     double fromX = 50; 
     double fromY = 400; 
     double toX = 300; 
     double toY = 300; 

     Circle node = new Circle(10); 

     MoveTo path1 = new MoveTo(); 
     path1.setX(fromX); 
     path1.setY(fromY); 
     QuadCurveTo path2 = new QuadCurveTo(); 
     path2.setX(toX); 
     path2.setY(toY); 
     path2.setControlX(fromX); 
     path2.setControlY(toY); 
     Path path = new Path(path1, path2); 
     path.setStroke(Color.DODGERBLUE); 
     path.getStrokeDashArray().setAll(5d, 5d); 
     PathTransition secondMove = new PathTransition(Duration.seconds(2), path, node); 
     secondMove.setCycleCount(Transition.INDEFINITE); 

     Pane content = new Pane(node, path); 
     primaryStage.setScene(new Scene(content, 600, 600)); 
     primaryStage.show(); 

     secondMove.play(); 
    } 
} 
関連する問題