为什么我用pygame写的事件检测,只有当在游戏窗口中按下鼠标不放,才能检测到键盘事件?
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
key_pressed = pygame.key.get_pressed()
if key_pressed[pygame.K_a]:
self.player.move = True
self.player.play_x -= 5
self.player.player =self.player.left
self.player.rect = self.player.leftrect
if key_pressed[pygame.K_d]:
self.player.move = True
self.player.play_x += 5
self.player.player = self.player.right
self.player.rect = self.player.rightrect
if key_pressed[pygame.K_w]:
self.player.move = True
self.player.play_y -= 5
if key_pressed[pygame.K_s]:
self.player.move = True
self.player.play_y += 5
事件 event:
就是游戏启动后,用户针对游戏所做的操作
例如:点击关闭按钮,点击鼠标,按下键盘…
在 游戏循环 中,判断用户 具体的操作,只有 捕获 到用户具体的操作,才能有针对性的做出响应pygame 中通过 pygame.event.get() 可以获得 用户当前所做动作 的 事件列表
#初始化时钟对象
clock = pygame.time.Clock()
#游戏循环
while True:
# 设置屏幕刷新帧率
clock.tick(60)
# 事件监听
for event in pygame.event.get():
# 判断用户是否点击了关闭按钮
if event.type == pygame.QUIT:
print("退出游戏...")
pygame.quit()
下表是一个常用事件集:
事件 | 说明 |
---|---|
QUIT | 用户按下关闭按钮 |
KEYDOWN | 键盘被按下 |
KEYUP | 键盘被放开 |
MOUSEMOTION | 鼠标移动 |
MOUSEBUTTONDOWN | 鼠标按下 |
MOUSEBUTTONUP | 鼠标放开 |
VIDEORESIZE | 窗口缩放 |