0
由于导入模块“time”并使用time.sleep(秒)冻结了整个屏幕。如何冻结一个精灵3,4或5秒?我试过这样做,但它冻结了整个pygame 3秒钟!如何在pygame中冻结一段精灵时间?
elif event.key == pygame.K_q:
time.sleep(3)
由于导入模块“time”并使用time.sleep(秒)冻结了整个屏幕。如何冻结一个精灵3,4或5秒?我试过这样做,但它冻结了整个pygame 3秒钟!如何在pygame中冻结一段精灵时间?
elif event.key == pygame.K_q:
time.sleep(3)
在Pygame中,你负责“主循环”,并因此负责你游戏的所有时间管理。
这对于简单的绘图示例非常棒,并且非常适合对事物进行“控制” - 但这意味着如果唯一对在屏幕上移动和更新的所有内容负责。
当你调用pygame.time.delay
或time.sleep
暂停整个程序 - 暂停某个对象,而不是别人,和NT都停止响应事件的唯一途径,是建立在你的代码的机制,允许单个对象暂停。
对于简单的代码,它可以是一个简单的“暂停”属性和if
验证在你的精灵代码 - 你的精灵类的update
方法soemthng沿着这 - 例如,给定的每秒30个更新一“帧频” ,如果您使用该方法实际更新位置,并且您的对象采取“采取措施”:
class MySprite(BaseSprite):
def __init__(self, ...):
self.pause = 0...
def update(self):
if self.pause:
self.pause -= 1
return
def main():
FRAMERATE = 30
myobject = MySprite(...)
while True:
if ...:
...
elif event.key == pygame.K_q:
myobject.pause = 3 * FRAMERATE
for obj in all_my_objs:
obj.update()
您是什么意思_“freeze a sprite”_?为了让它停止移动? –
是的,可以冻结一段时间并能够移动其他精灵。 – StrozeR
精灵只是图像,所以这一切都取决于你如何blit他们。我不知道你的程序如何工作,但我猜你的精灵有速度变量?只需将该变量设置为要冻结的sprite上的0,就会有一个计时器检查,直到某个时间过去,然后将速度设置回原来的值。 –