[英]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.