Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javafx简单路径转换动画_Java_Animation_Javafx_Path - Fatal编程技术网

javafx简单路径转换动画

javafx简单路径转换动画,java,animation,javafx,path,Java,Animation,Javafx,Path,我正在使用JavaFX构建一个纸牌游戏,我很难添加简单的动画 我有一个HBox,里面有多个图像视图。每个图像都有一个-80的右边距,以使图像彼此重叠 现在,我想在添加卡片时设置其动画。我想把它放在屏幕上的某个地方(对手玩家的手),然后将它移动到没有动画的位置 我试过这个: // Animation Path path = new Path(); MoveTo moveTo = new MoveTo(200, 200); moveTo.setAbsolute(true); path.getElem

我正在使用JavaFX构建一个纸牌游戏,我很难添加简单的动画

我有一个HBox,里面有多个图像视图。每个图像都有一个-80的右边距,以使图像彼此重叠

现在,我想在添加卡片时设置其动画。我想把它放在屏幕上的某个地方(对手玩家的手),然后将它移动到没有动画的位置

我试过这个:

// Animation
Path path = new Path();
MoveTo moveTo = new MoveTo(200, 200);
moveTo.setAbsolute(true);
path.getElements().add(moveTo);
LineTo lineTo = new LineTo(0, 0);
path.getElements().add(lineTo);
PathTransition pathTransition = new PathTransition();
pathTransition.setDuration(Duration.millis(4000));
pathTransition.setPath(path);
pathTransition.setNode(imageView);
pathTransition.setCycleCount(1);
pathTransition.play();
但它不像我想要的那样工作。我不知道如何处理这些问题,也找不到解决问题的办法


我希望有人能帮助我解决我的问题

正确的
路径
几何体关键取决于根
的布局。在下面的示例中,
路径从左上角到右下角,经过调整以使移动的
矩形保持可见。它将矩形添加到
窗格
,“因为除了将可调整大小的子项调整为其首选大小之外,它不会执行布局。”如果使用更高级的布局,例如
堆栈窗格
,请相应地调整对齐方式:

StackPane root = new StackPane();
root.setAlignment(Pos.TOP_LEFT)


你明白了吗?:)
import javafx.animation.PathTransition;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import javafx.util.Duration;

/** @see http://stackoverflow.com/a/31443755/230513 */
public class AnimationTest extends Application {

    private static final int SIZE = 256;
    private static final int RECT = SIZE / 4;
    private static final int R2 = RECT / 2;

    @Override
    public void start(Stage stage) {
        stage.setTitle("Animation Test");
        Rectangle rect = new Rectangle(0, 0, RECT, RECT);
        rect.setArcHeight(16);
        rect.setArcWidth(16);
        rect.setFill(Color.GOLD);
        Pane root = new Pane();
        root.getChildren().add(rect);
        Scene scene = new Scene(root, SIZE, SIZE);
        stage.setScene(scene);
        stage.show();

        Path path = new Path();
        path.getElements().add(new MoveTo(R2, R2));
        path.getElements().add(new LineTo(SIZE - R2, SIZE - R2));
        PathTransition pathTransition = new PathTransition();
        pathTransition.setDuration(Duration.millis(1000));
        pathTransition.setPath(path);
        pathTransition.setNode(rect);
        pathTransition.setCycleCount(Timeline.INDEFINITE);
        pathTransition.setAutoReverse(true);
        pathTransition.play();
    }

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

}