0

私は3つの画像を順番に表示しようとしていますが、それぞれにスケール変換を加えています(1,2,3の画像)。私は、imageview の単一のインスタンスで ScaleTransition を使用しています。連続した各変換の後、imageView の高さがスケーリングされますが、マイ コードはリセットされません。

    public void start(Stage primaryStage) {

    final IntegerProperty intProperty = new SimpleIntegerProperty(0);
    final Image[] array = {
            (new Image(WaitEffect.class.getResource("1.png")
                    .toExternalForm())),
            (new Image(WaitEffect.class.getResource("2.png")
                    .toExternalForm())),
            (new Image(WaitEffect.class.getResource("3.png")
                    .toExternalForm())) };
    Group root = new Group();

    Scene scene = new Scene(root, 400, 400, Color.BLACK);
    StackPane pane = StackPaneBuilder.create()
            .layoutX(scene.getWidth() / 2).layoutY(scene.getHeight() / 2)
            .build();
    final ImageView imageView = new ImageView();
    pane.getChildren().add(imageView);
    Timeline timeline = new Timeline();
    int count = 0;
    KeyValue value = new KeyValue(intProperty, count++);
    KeyFrame frame = new KeyFrame(Duration.millis(2000),
            new EventHandler<ActionEvent>() {
                int co = 0;

                @Override
                public void handle(ActionEvent paramT) {
                    imageView.setImage(array[co]);

                    ScaleTransition st = ScaleTransitionBuilder.create()
                            .byX(2).byY(2).node(imageView)
                            .duration(Duration.millis(500)).build();
                    st.play();
                    imageView.setFitHeight(150);
                    imageView.setFitWidth(150);
                    imageView.resize(150, 150);
                    co++;
                }
            }, value);

    timeline.getKeyFrames().add(frame);
    timeline.setCycleCount(3);
    timeline.play();

    root.getChildren().addAll(pane);
    primaryStage.setScene(scene);

    primaryStage.show();
}`
4

1 に答える 1

2

ImageViewnew を設定した後、プロパティをリセットしませんImagefromたとえば、次のプロパティを設定して、自分でリセットする必要がありますScaleTransition

ScaleTransition st = ScaleTransitionBuilder.create()
    .fromX(1).fromY(1)
    .byX(2).byY(2).node(imageView)
    .duration(Duration.millis(500)).build();
于 2012-08-22T08:43:55.043 に答える