2010-04-06 9 views
0

공이 무작위로 원의 4 섹터 중 하나에서 움직이는 애니메이션을 만들고 싶습니다. 이것은 5 번 발생할 것입니다. 즉, i while 루프 (i < 5)를 만들고 무작위 function.i를 호출 한 다음 if 루프를 만들고 무작위 fn value.i에 따라 x 및 y 값을 첨부 한 다음 while 루프 및 키 프레임에 타임 라인 객체를 만듭니다. 값, 나는 x 및 y values.but 프로그램을 실행할 때 무슨 일이 일어나는 모든 값 (x 및 y 값 println 통해 본 있지만) 마지막 x 및 y 값 (i = 5) 이전 값 (1 < = i < = 4)에 대한 화면에 애니메이션이 렌더링되지 않습니다. 제 위치가 잘못되었다고 알려주십시오.Javafx에서 타임 라인의 키 프레임 값을 제어하는 ​​While 루프 사용

공용 기능 실행 (인수 : 문자열 []) {

VAR I = 0; while (i < 5) { var z = gety(); println (z); // var relativeTime : 지속 시간 = 0s; if (z == 1) {xbind = 120; ybind = 80; } else if (z == 2) {xbind = 120; ybind = 120; } else if (z == 3) { xbind = 80; ybind = 120; } else if (z == 4) { xbind = 80; ybind = 80; }

VAR의 t : 타임 타임 = {

//time: bind pos with inverse; 
repeatCount: Timeline.INDEFINITE 
    autoReverse: true 

    keyFrames: 
     [ 


     KeyFrame{ 
    time: 0s values: [ x => 100.0,y => 100.0]}, 
    KeyFrame{time: 2s values:[x => xbind tween Interpolator.LINEAR, 
    y => ybind tween Interpolator.LINEAR,] 
}, 
    ] 


    }//end timeline 

    i++; 
    t.play(); 
Thread.sleep(2000); 
}//end while 

} 루프에서 애니메이션

답변

0

바인딩 갱신 값은 상대적으로 일반적인 안티 패턴 보인다. 타임 라인에서 바운드 값을 업데이트하는 것이 더 나은 솔루션입니다. 코드 조각에 대해 this post을 조사하십시오. 스테이지를 사용한다는 것은 run() 함수에 로직을 넣을 필요가 없다는 것을 의미합니다.