использование цикла While для управления значением ключевого кадра на временной шкале в Javafx - PullRequest
0 голосов
/ 06 апреля 2010

Я хочу создать анимацию, где шар будет перемещаться в одном из 4 секторов круга случайным образом. Это произойдет 5 раз. Поэтому я создаю цикл while (i <5) и вызываю функцию random.i затем создайте цикл if и присоедините некоторые значения x и y в соответствии со случайным значением fn. Затем создайте объект временной шкалы внутри цикла while и в значении ключевого кадра. Я использую эти значения x и y. происходит то, что создаются все значения (значения x и y, видимые через println), но только последние значения x и y (для i = 5) отображаются на экране. анимации для предыдущих значений (1 < = я <= 4) не отображаются. Пожалуйста, сообщите, где я ошибся? </p>

запуск публичной функции (args: String []) {

var i = 0; в то время как (I <5) { var z = gety (); Println (г); // varlativeTime: Duration = 0s; если (г == 1) {Xbind = 120; ybind = 80; } иначе, если (z == 2) {Xbind = 120; ybind = 120; } иначе если (z == 3) { xbind = 80; ybind = 120; } иначе, если (z == 4) { xbind = 80; ybind = 80; } </p>

var t: Timeline = Timeline {

 //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

}

1 Ответ

0 голосов
/ 07 апреля 2010

Обновление связанных значений для анимации в цикле представляется относительно распространенным анти-паттерном. Обновление связанных значений на временной шкале является лучшим решением. Изучите этот пост для фрагмента кода. Обратите внимание, что использование Stage означает, что вам не нужно помещать логику в функцию run ().

...