Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法控制Pygame Zero中的FPS?_Python_Python 3.x_Raspberry Pi_Pygame - Fatal编程技术网

Python 有没有办法控制Pygame Zero中的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渲染将非常有用 我还注意到,声音在播放后会不断循环,所以我尝试在播放后停止播放,但在播放结束时声音会中断,因为动画似乎完成得太早了 以下是我目前掌

我正在使用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代码运行代码时,它似乎运行得更好。所以我希望这就是问题所在。