簡體   English   中英

如何在JavaFX 8中執行組合/並行縮放和平移動畫

[英]How to perform a combined/parallel scaling and translation animation in JavaFX 8

我最近才開始玩Java FX,並且非常喜歡它。 我還沒有閱讀任何書籍或深入的教程,因此這個問題可能很容易回答。

我想放大的ImageView的 ,並顯示用戶的圖像的特定區域的情況下,當他點擊在圖像的某個區域。 更准確地說,請看以下圖像:

在此處輸入圖片說明

(如果圖片太小,請使用更大的版本

(A)顯示我正在使用的完整圖像(world-map.jpg,大小:4.000px X 3.000px)

(1)顯示我正在向用戶顯示的階段。 我對ImageView對象進行了一些初始縮放和轉換,以使視圖更加集中在歐洲和非洲。 標記的區域是帶有附加的事件處理程序的附加Element(不在我的代碼中)

(2)顯示執行ParallelTransition后獲得結果

(3)顯示我想要得到的結果

當我執行ParallelTransition時,將發生ImageView正確縮放,但同時會轉換到Image的右下角。 我做錯了什么?

這是我的JavaFX應用程序代碼:

@Override
  public void start(final Stage stage)
  {

    // our root group
    final Group g = new Group();

    // load image
    ImageView im = new ImageView();
    // using a helper method to load external resource
    Image img = FileUtils.loadImage(R.imageWorldMap);
    im.setImage(img);
    g.getChildren().add(im);

    // translate to center view on europe and africa
    Translate t = new Translate();
    t.setX(-300);
    t.setY(-200);
    im.getTransforms().add(t);

    // zoom out because source image is huge
    Scale scale = new Scale();
    scale.setX(.3);
    scale.setY(.3);
    im.getTransforms().add(scale);

    // create scene and show stage
    final Scene s = new Scene(g, 640, 480);
    stage.setScene(s);
    stage.show();

    // code below is normally inside an event handler 
    // but for simplicity reason and testing its like that now

    // move europe to the center
    TranslateTransition translateTransition =
            new TranslateTransition(Duration.millis(2000), im);

    translateTransition.setToX(1100); // 3300
    translateTransition.setToY(900); // 2700

    // scale in europe
    ScaleTransition scaleTransition =
            new ScaleTransition(Duration.millis(2000), im);
    scaleTransition.setToX(3f);
    scaleTransition.setToY(3f);

    // create parallel translation
    ParallelTransition parallelTransition = new ParallelTransition();
    parallelTransition.getChildren().addAll(
            scaleTransition
            , translateTransition
    );

    parallelTransition.play();

  }

為了獲得更好的結果,我在坐標上進行了一些調整,我做到了,但是我想了解如何實用地完成此任務。

作為附帶問題,您是否可以(根據您的經驗)推薦一本有關Java FX 8的書?

我使用的技術:Win7,Java8,JavaFX8

我將參考示例...在javafx的演示下,有一個項目可以滿足您的要求。MandrelBot ... src在同一程序包中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM