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,就會有一個計時器檢查,直到某個時間過去,然後將速度設置回原來的值。 –