2016-10-25 5 views
0

버튼을 클릭하면 ImageView가 화면 전체에서 일정량 움직이는 Java 응용 프로그램이 있습니다. 버튼을 클릭 할 때마다 애니메이션이 실행되도록 어떻게 만들 수 있습니까? 클릭 버튼을 만들고 기능을 실행하는 방법을 알고 있습니다. 애니메이션을 올바르게 사용하여 새로운 애니메이션을 동적으로 실행하는 방법을 모르겠습니다.동적으로 JavaFX 애니메이션을 재생하는 방법

public Timeline moveAnimation(double x, double y) { 
    // horizontal movement 
    KeyValue kv = new KeyValue(turtle.xProperty(), x); 
    KeyFrame kf = new KeyFrame(Duration.millis(500), kv); 
    timeline.getKeyFrames().add(kf); 

    // vertical movement 
    KeyValue kv2 = new KeyValue(turtle.yProperty(), y); 
    KeyFrame kf2 = new KeyFrame(Duration.millis(500), kv2); 
    timeline.getKeyFrames().add(kf2); 

    return timeline; 
} 

public void move(double x, double y) { 
    moveAnimation(x, y).play(); 
} 

위의 방법은 한 번 재생됩니다. move() 메서드를 새 값으로 다시 실행하려고하면 아무 일도 일어나지 않습니다.

+0

Timeline 개체를 가져 와서 timeline.play()를 다시 실행하십시오. – MordechayS

+0

예. 그것은 작동합니다! 와우 나는 이전에 그걸 시도했기 때문에 완전히 빠졌지 만, 아마도 그 안에 약간의 버그가 있었을 것입니다. 이제 다시 시도해 보았습니다. 고맙습니다. –

+0

실제 코드 스 니펫 등으로 전체 답변을 올렸습니다. 도움이된다면 제 대답을 수락 할 수 있으면 좋겠어요. – MordechayS

답변

1

Timeline은 모든 애니메이션 '단계'(AKA : KeyFrame)를 포함합니다.

public void move(double x, double y) { 
    Timeline timeline = moveAnimation(x, y).play(); 
    //use timeline wherever... 
} 

을 그리고 당신은 애니메이션을 재사용 할 경우 다음 timeline.play()를 호출하십시오 move 방법

,이처럼 moveAnimation 메소드로부터 반환 된 값 유형 Timeline의 변수를 할당해야합니다.

행운을 빈다.

관련 문제