python - Pygame, Draw the same frame for a set amount of time -
i want display message 2 seconds.
the logic im using right making code wait using pygame.time.delay(2000)
after pygame.display.flip
.
a short example: (i use flip-delay on my code lot)
write_gui("{0} has appeared".format(monster.name), blue, 24, text_corner_x, text_corner_y) pygame.display.flip() pygame.time.delay(2000)
this work tends "hang" entire process, when happens bugs because of this, frame loss because program can keep sleep-awake cycle.
so i'm thinking right draw same frame 2 seconds.
so guys recommend should do?
because 1 of answers put every flip on while loop, there has better line-conservative approach solve this.
your program "hangs" because not calling pygame.event.get()
when sleeping, pygame.event.get()
lets pygame handle internal events.
the simplest way solve use return value dt = clock.tick()
, in case dt
will time since last call clock.tick()
, value in milliseconds. use value increment counter on how long show message.
you write function if wanted , call how long wait:
def waitfor(waittime): # waittime in milliseconds screencopy = screen.copy() waitcount = 0 while waitcount < waittime: dt = clock.tick(60) # 60 fps here waitcount += dt pygame.event.pump() # tells pygame handle it's event, instead of pygame.event.get() screen.blit(screencopy, (0,0)) pygame.display.flip()
this function wait specified time , keep screen before call.
Comments
Post a Comment