我怎样才能停止pygame.time.set_timer?

How can i stop pygame.time.set_timer?

我要打印消息3次。那么在这个例子中我怎么能停止pygame.time.set_timer?

import pygame
 
pygame.init()
 
print_message = pygame.USEREVENT + 0

pygame.time.set_timer(print_message, 1000)

while True:
    for event in pygame.event.get():
        if event.type == print_message: 
            print("stop now ")`
  

这可能不是最好的解决方案,但您可以在希望它停止时将变量“print_message”设置为其他值

像这样:

import pygame
 
pygame.init()
 
print_message = pygame.USEREVENT + 0

pygame.time.set_timer(print_message, 1000)

while True:
    for event in pygame.event.get():
        if event.type == print_message: 
            print("stop now ")
            print_message = 0

可以通过将 0 传递给 pygame.time.set_timertime 参数来停止计时器事件:

import pygame
 
pygame.init()
 
print_message = pygame.USEREVENT + 0
pygame.time.set_timer(print_message, 1000)

while True:
    for event in pygame.event.get():
        if event.type == print_message: 
            pygame.time.set_timer(print_message, 0)

pygame.time.set_timer还有一个额外的_loops_argument:

loops is an integer that denotes the number of events posted. If 0 (default) then the events will keep getting posted, unless explicitly stopped.

如果您只想获得 1 个事件,请使用参数 1 调用 pygame.time.set_timer

import pygame
 
pygame.init()
 
print_message = pygame.USEREVENT + 0

pygame.time.set_timer(print_message, 1000, 1)  # <---

while True:
    for event in pygame.event.get():
        if event.type == print_message: 
            # [...]