최근 Java FX로 놀아보기 시작했습니다. 나는 어떤 책이나 깊이있는 튜토리얼을 아직 읽지 않았으므로이 질문은 아마도 매우 간단 할 것이다.JavaFX 8에서 결합/병렬 스케일링 및 번역 애니메이션을 수행하는 방법
가 나는 이미지 뷰을 확대하고 그 이미지의 특정 영역에서 클릭 할 때 경우에 사용자에게 이미지의 특정 영역을 보여주고 싶어요.
(이미지가 너무 작은 경우, 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