序列动画

时间:2016-01-10 18:35:09

标签: java animation javafx

package example;/**
 * Created by tri___ton on 09.01.16.
 */

import javafx.animation.ScaleTransition;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.stage.Stage;
import javafx.util.Duration;

public class AnimationSequence extends Application {

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

    @Override
    public void start(Stage primaryStage) {

    Stage stage = new Stage();
        Group group = new Group();
        Image first = new Image("http://hq-oboi.ru/photo/kotik_kak_pushistyy_komochek_1920x1200.jpg", 100.0, 100.0, true, true);
        ImageView firstImage = new ImageView();
        firstImage.setImage(first);


        Image second = new Image("http://hq-wallpapers.ru/wallpapers/2/hq-wallpapers_ru_animals_8040_1280x1024.jpg", 100.0, 100.0, true, true);
        ImageView secondImage = new ImageView();
        secondImage.setImage(second);

        secondImage.setLayoutX(150);
        secondImage.setLayoutY(150);


        group.getChildren().add(firstImage);
        group.getChildren().add(secondImage);


        Scene scene = new Scene(group, 300, 300);
        stage.setScene(scene);
        stage.show();


        ScaleTransition ft = new ScaleTransition(Duration.millis(3000));
        ft.setByX(1.5);
        ft.setByY(1.5);
        ft.setNode(firstImage);
        ft.play();


        ScaleTransition st = new ScaleTransition(Duration.millis(3000));
        st.setNode(secondImage);
        st.setByX(1.5);
        st.setByY(1.5);
        st.play();




    }
}

这只是一个简单的代码。

我需要一个接一个的动画。

动画第一 超时3秒 动画第二。

我该怎么做?

最大的问题是如何在主线程的不同部分之间进行暂停。

1 个答案:

答案 0 :(得分:0)

要一个接一个地制作动画,请将它们放在SequentialTransition

ScaleTransition ft = new ScaleTransition(Duration.millis(3000));
ft.setByX(1.5);
ft.setByY(1.5);
ft.setNode(firstImage);

ScaleTransition st = new ScaleTransition(Duration.millis(3000));
st.setNode(secondImage);
st.setByX(1.5);
st.setByY(1.5);

SequentialTransition sequence = new SequentialTransition(ft, st);
sequence.play();

如果您需要实际差距,可以添加PauseTransition,例如

PauseTransition pause = new PauseTransition(Duration.seconds(1));

SequentialTransition sequence = new SequentialTransition(ft, pause, st);
sequence.play();