一只魈咸鱼 发表于 2021-8-10 17:53:25

关于pygame的display.delay()的卡顿

我在关卡切换的时候用到了pygame.time.delay(),其中如果是比较短的时间,比如写2000就没问题。如果是5000比较长的时间,在最后两秒如果点击鼠标,pygame会变成未响应的白色状态,但5s结束后依然会顺利进入下一个关卡,只是这样体验不太好,如何解决呢?
#判断此时执行关卡切换
      if aim==level[-1]:
            if level_index!=(len(level)-1):
                #刷新为玩家达成目标时的画面,并保存1s
                pygame.display.flip()
                pygame.time.delay(1000)
                #进行下一个关卡初始化的必要操作
                level_index+=1
                mofangs.clear()
                annius.clear()
                opengame=True
                #播放欢呼声,并刷新为关卡切换的中间画面
                cheer_sound.play()
                screen.blit(bg_image,(0,0))
                screen.blit(cheer_image,cheer_rect)
                pygame.display.flip()
                #2s后音乐停止
                pygame.time.delay(2000)
                cheer_sound.stop()

南归 发表于 2021-8-10 19:36:51

开线程

一只魈咸鱼 发表于 2021-8-11 09:55:43

南归 发表于 2021-8-10 19:36
开线程

为什么呢?这段暂停了循环,只是音乐还在继续放,画面也是之前一帧的,貌似并没有产生更多的进程哎

南归 发表于 2021-8-11 16:16:24

一只魈咸鱼 发表于 2021-8-11 09:55
为什么呢?这段暂停了循环,只是音乐还在继续放,画面也是之前一帧的,貌似并没有产生更多的进程哎

耗时操作尽量就开线程

一只魈咸鱼 发表于 2021-8-11 20:04:31

南归 发表于 2021-8-11 16:16
耗时操作尽量就开线程

可我本来就是想在这里暂停,这样的话,等待变成了分线程的任务,主线不还会继续往下走吗
页: [1]
查看完整版本: 关于pygame的display.delay()的卡顿