Я использую AnimationTimer
для нескольких задач, таких как анимация с меняющимися фотографиями и ProgressIndicator
анимация. Для достижения необходимой скорости я помещаю поток в режим сна, но когда несколько анимаций работают одновременно, они влияют на скорость каждого другого. Есть ли другой способ изменить скорость AnimationTimer
? Пример кода:Как изменить скорость AnimationTimer?
private void initialize() {
programButtonAnimation=new AnimationTimer(){
@Override
public void handle(long now) {
showClockAnimation();
}
};
programButtonAnimation.start();
}
private void showClockAnimation(){
String imageName = "%s_"+"%05d"+".%s";
String picturePath="t093760/diploma/view/styles/images/pink_frames/"+String.format(imageName,"pink" ,frameCount,"png");
programButton.setStyle("-fx-background-image:url('"+picturePath+"')");
frameCount++;
try {
Thread.sleep(28);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(frameCount>=120){
programButtonAnimation.stop();
frameCount=0;
}
}
Для получения дополнительной информации об использовании 'AnimationTimer', я рекомендую прочитать [this] (http://svanimpe.be/blog/game-loops.html) и [this] (http://svanimpe.be/blog/ game-loops-fx.html) –
Если 'handle' вызывается с фиксированной скоростью, скажем каждые 16 мс или около того, не использует ли этот метод джиттер, делая обновления в 16, 32, 16, 16, 32 мс и т. д. ? –
@StevensMiller Да, в этом случае это повлияет на гладкость (слегка). Ссылки в моем предыдущем комментарии обсуждают возможные решения этого в деталях. Не совсем понятно, почему OP захочет глубже затухать это за «естественной» скоростью рендеринга кадров инструментария JavaFX. –