Я работаю над простым проектом, использующим ноль Pygame, и до сих пор мне удавалось отобразить группу изображений для формирования очень простой анимации. Я сделал видео в формате .png со скоростью 60 кадров в секунду. Кажется, что Pygame zero отдает их немного быстрее, и мне было просто интересно, есть ли способ установить FPS на 60, чтобы все отображалось так, как я ожидал. У меня есть несколько звуковых файлов, которые я хотел бы синхронизировать с последовательностью изображений, поэтому было бы очень полезно, чтобы они воспроизводились с постоянным FPS.
Я также заметил, что звук продолжает зацикливаться после его воспроизведения, поэтому я попытался остановить его после воспроизведения, но звук обрывается в конце, потому что анимация заканчивается слишком рано.
Вот код, который у меня есть:
import pgzrun
WIDTH = 480
HEIGHT = 360
# boot1 graphics
boot1 = Actor('boot1_1')
boot1.frame = 1
boot1.active = True
# boot2 graphics
boot2 = Actor('boot2_1')
boot2.frame = 1
boot2.active = False
# overlay
overlay = Actor("overlay_a")
def update_boot1():
if boot1.active:
boot1.x = WIDTH/2
boot1.image = "boot1_{}".format(boot1.frame)
boot1.frame += 1
else:
boot1.x = 1000
if boot1.frame > 59:
#boot1.frame = 1
boot2.active = True
update_boot2()
boot1.active = False
def update_boot2():
if boot2.active:
boot2.x = WIDTH/2
sounds.boot1.play()
boot2.image = "boot2_{}".format(boot2.frame)
boot2.frame += 1
else:
boot2.x = 1000
if boot2.frame > 233:
boot2.frame = 233
boot2.active = False
sounds.boot1.stop()
def draw():
screen.clear
screen.fill((0, 75, 0))
boot2.draw()
boot1.draw()
overlay.draw()
# running the animation
def update(dt):
update_boot1()
update_boot2()
pgzrun.go()
Я также не нашел способа «выгрузить» последовательности изображений или сделать их невидимыми, когда я закончу с ними, поэтому я просто отбрасываю их в сторону с помощью «.x = 1000».