0

私は FlashProfessional (CS 6) でアニメーションを作成しましたが、これは最悪です (最後の変更を保存せずに常にクラッシュし、巨大なファイルを生成し、一貫性がありません)。JavaFX 2.x で次の単純なタスクを実行する方法を理解するのに苦労しています (おそらく私の背景が Flash にあるためです): t=0 から t=100 までの一定の位置に存在する四角形、およびその後シーンから削除されます。

Flash では、t=0 で四角形を描くキーフレームを作成できました。次に、長方形が削除された t=100 で 2 番目のキーフレームを作成します。それは簡単です。

JavaFXでは、なぜ私はただ書いtimeline.getKeyFrames().addAll(new KeyFrame(new Duration(100), new Rectangle(10, 10, 25, 25)));たり、好きになったりすることはできません。

私を助けてコードを提供してください。これらの KeyValues と Java プロパティで迷っています。なぜそれらが必要なのか…</p>

4

1 に答える 1

0

そのタスクを達成するには、100 ミリ秒後に四角形を削除するだけです。Flash とは異なり、JavaFX はキーフレームを中心に構築されていません。キーフレームはオプションの機能であり、オブジェクトのスケーリングなど、実際のアニメーションが必要な場合にのみ使用されます。詳細については、次のチュートリアルを参照してください: http://docs.oracle.com/javafx/2/animations/jfxpub-animations.htm

そしてコードのデモンストレーション:

public void start(Stage primaryStage) {
    final Rectangle rect1 = new Rectangle(10, 70, 50, 50);
    final Rectangle rect2 = new Rectangle(10, 150, 50, 50);

    Button btn = new Button("Play");
    btn.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent t) {
            // this "timeline" just call a handler after 500 ms which hides rectangle
            TimelineBuilder.create().keyFrames(new KeyFrame(Duration.millis(500), new EventHandler<ActionEvent>() {

                @Override
                public void handle(ActionEvent t) {
                    rect1.setVisible(false);
                }
            })).build().play();

            // this timeline hides rectangle 2 with animation
            // changing scaleXProperty() from 1 (default) to 0
            TimelineBuilder.create().keyFrames(
                    new KeyFrame(
                        Duration.millis(500), 
                        new KeyValue(rect2.scaleXProperty(), 0))
                    ).build().play();
        }
    });

    Pane root = new Pane();
    root.getChildren().addAll(rect1, rect2, btn);

    Scene scene = new Scene(root, 300, 300);

    primaryStage.setScene(scene);
    primaryStage.show();
}
于 2013-02-08T07:39:19.130 に答える