Python 有没有办法控制Pygame Zero中的FPS?
我正在使用pygame zero进行一个简单的项目,到目前为止,我已经能够显示一组图像以形成一个非常简单的动画。我以60 fps的速度将视频渲染成.png序列。看起来pygame zero的渲染速度比这快了一点,我只是想知道是否有办法将FPS锁定为60,这样所有的东西都会像我预期的那样渲染。我有一些声音文件,我想与图像序列同步,所以让它们以恒定的FPS渲染将非常有用 我还注意到,声音在播放后会不断循环,所以我尝试在播放后停止播放,但在播放结束时声音会中断,因为动画似乎完成得太早了 以下是我目前掌握的代码:Python 有没有办法控制Pygame Zero中的FPS?,python,python-3.x,raspberry-pi,pygame,Python,Python 3.x,Raspberry Pi,Pygame,我正在使用pygame zero进行一个简单的项目,到目前为止,我已经能够显示一组图像以形成一个非常简单的动画。我以60 fps的速度将视频渲染成.png序列。看起来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的一边 在跑步循环中,只需使用:
只需使用clock.tick60或任何你想要的fps,所以我应该将clock.tick60放在def更新循环中?你是否有一个while循环,它将无限循环通过自身?不,我使用的是pygame zero,而不是普通的pygame。所以我相信它的工作原理有点不同。但是我注意到,当我通过IDLE而不是visualstudio代码运行代码时,它似乎运行得更好。所以我希望这就是问题所在。