2014-09-14 3 views
0

최근 Java FX로 놀아보기 시작했습니다. 나는 어떤 책이나 깊이있는 튜토리얼을 아직 읽지 않았으므로이 질문은 아마도 매우 간단 할 것이다.JavaFX 8에서 결합/병렬 스케일링 및 번역 애니메이션을 수행하는 방법

가 나는 이미지 뷰을 확대하고 그 이미지의 특정 영역에서 클릭 할 때 경우에 사용자에게 이미지의 특정 영역을 보여주고 싶어요.

enter image description here

(이미지가 너무 작은 경우, here is a bigger version)

(A) 내가 사용하고있는 전체 이미지를 (보여줍니다 세계적 : 더 정확하게하려면 다음 이미지를 살펴 map.jpg, 크기 : 4.000px x 3.000px)

(1)은 사용자를 보여줍니다. 뷰가 유럽과 아프리카에 더 집중되도록 ImageView 객체에 대한 초기 확장 및 변환을 수행했습니다. 표시된 영역은 연결된 이벤트 핸들러 (안 내 코드에서)

(2) 내가 내 ParallelTransition 수행 한 후을받은 결과를 보여줍니다 와 추가 요소입니다

(3)

을 보여줍니다 결과가 필요합니다을 얻으려면

ParallelTransition을 수행 할 때 ImageView가 올바르게 확대되고 이미지의 오른쪽 하단으로 변환된다는 것은 어떻게됩니까? 나는 무엇을 잘못 했는가?

여기 내 자바 FX 애플리케이션 코드 :

@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(); 

    } 

내가 더 나은 결과를 얻을 좌표 조금 주위 재생, 나는했지만 나는 실용적으로 수행이 작업을 얻을하는 방법을 이해하고 싶습니다. , Win7에, Java8 JavaFX8

답변

0

나는 예를 참조 것을 .. :

는 측면 질문, 당신은 자바 FX에 대한 책을 내가 사용하는 8

테크 (당신의 경험에 의해) 추천 할 수 있습니다 . Demos javafx 것들 아래에 내가 믿고 싶은 것을하는 프로젝트가있다. MandrelBot ... src는 같은 패키지에있다 ..

관련 문제