2

我有一个(非常)小的 Pygame 演示,它在 Linux 和 OS X 下的行为不同。演示创建一个 500x500 的窗口,然后进入一个收集事件的循环。使用 Pygame 时钟将“帧速率”调节为 5 fps。在 OS X 下执行时,event.get() 每帧从不会返回超过两个排队的鼠标事件。在 Linux 下执行时,event.get() 返回更多事件,并且能够准确地跟踪帧之间的鼠标移动。

编辑:我发现一些评论表明 OS X 下的 SDL(它是 Pygame 的基础)中的鼠标事件可能存在问题。这个 Pygame 安装使用的是 1.2.14。

有谁知道我做错了什么,或者我如何让 OS X 在帧之间捕获类似的丰富事件?

这是代码:

import pygame
from pygame.locals import QUIT

pygame.init()
pygame.display.init()

display = pygame.display.set_mode((500,500))
clock = pygame.time.Clock()

done = False
while not done:
    clock.tick(5)
    events = pygame.event.get()
    if len(events) > 1:
        print len(events)
    for event in events:
        if event.type == pygame.locals.QUIT:
            done = True

示例输出如下。这些是在同一台(双启动)机器上捕获的。

OS X 输出(在窗口中移动鼠标时):

$ python pygameevent.py
2
2
2
2
2
2
2
3
2
2

Linux 输出(在窗口中移动鼠标时):

$ python pygameevent.py
18
14
21
15
12
15
19
24
23
21
18
3
10
4

0 回答 0