2012-10-19 2 views
1

JavaFX 2.x에서 원을 한 픽셀 왼쪽으로 이동시키는 간단한 애니메이션을 만들려고합니다. 애니메이션이 작동하지만 두 번째 시간을 시작할 때마다 더 이상. 여기, 몇 가지를 시도하는 코드입니다했습니다JavaFX 애니메이션 재활용

public void handle(KeyEvent t) { 
    if (t.getCode() == KeyCode.LEFT) { 
     final KeyValue kv = new KeyValue(testPuck.translateXProperty(), -1); 
     final KeyFrame kf = new KeyFrame(Duration.millis(50), kv); 
     timeLineToLeft.getKeyFrames().add(kf); 
     timeLineToLeft.play(); 
    } 
} 

내가 타임 라인이 동일 널하지 않았다 경우 검사를 시도했습니다 즉 키 프레임/키 값을 제거하고 다시 추가 한 후. 하지만 그건 도움이되지 못했습니다. 이 주제에 도움이 되셨습니까? 이 주제에 관한 문서가 부족한 것 같습니다. 미리 감사드립니다.

답변

0

귀하의 애니메이션에는 KeyFrame - 최종 이미지 1 개만 있습니다. testPuck은 -1 점에 있습니다. 따라서 두 번째 호출 이후에 새로운 KeyFrame을 추가하면 퍽을 -1 지점에서 -1 지점으로 이동하며 아무런 반응이 없습니다.

다음보십시오 :

public void handle(KeyEvent t) { 
    if (t.getCode() == KeyCode.LEFT) { 
     Timeline timeLineToLeft = new Timeline(); 
     final KeyValue kv = new KeyValue(testPuck.translateXProperty(), 
      testPuck.getTranslateX() -1); // note we calculate new value every time 
     final KeyFrame kf = new KeyFrame(Duration.millis(50), kv); 
     timeLineToLeft.getKeyFrames().add(kf); 
     timeLineToLeft.play(); 
} 

당신이 정말로 Timeline 개체를 다시 사용하려는 경우, 분명히 첫째 :

timeLineToLeft.getKeyFrames().clear(); 
    //... 
    timeLineToLeft.playFromStart(); 

주 내가 때마다 Timeline 다시, 어디를 유지하는 이유는 없습니다