Estou tentando animar uma imagem para um tema de inicialização personalizado plymouth. Eu posso obter o objeto para mover por incrementos de pixels, mas ele não atualiza rápido o suficiente para ser suave. Eu não entendo muito bem o truque para atualizar a tela em determinados intervalos de quadros. O código que tenho é assim:
wallpaper_image = Image("Win95.png");
plane_image = Image("paperairplaneShadow.png");
screen_width = Window.GetWidth();
screen_height = Window.GetHeight();
resized_wallpaper_image = wallpaper_image.Scale(screen_width,screen_height);
plane_sprite = Sprite(plane_image);
wallpaper_sprite = Sprite(resized_wallpaper_image);
wallpaper_sprite.SetZ(-100);
progress=0;
fun refresh_callback ()
{
for (i = 0; i < 4; i++){
plane_images[i] = Image("paperairplaneShadow" + i + ".png");
plane_sprite = Sprite();
}
plane_sprite.SetImage(plane_images[Math.Int(progress/6) % 4]);
//plane_sprite.SetImage(plane_images[]);
plane_sprite.SetX(progress);
//plane_sprite.SetY(progress);
progress++;
}
Plymouth.SetUpdateStatusFunction(refresh_callback);
Eu estava seguindo o tutorial no link . Não consigo descobrir como a alteração da taxa de quadros funciona:
butterfly_sprite.SetImage(butterfly_images[Math.Int(progress / 6) % 4]);
O site diz que deve colocar a próxima imagem no array butterfly.sprite (que tem 4 imagens) a cada 6 quadros. No meu script, o plane_sprite será atualizado, mas apenas uma vez por segundo. Qualquer ajuda seria muito apreciada.