Linux と OS X で動作が異なる (非常に) 小さい Pygame デモがあります。デモは 500x500 ウィンドウを作成し、イベントを収集するループに入ります。「フレームレート」は、Pygame クロックを使用して 5 fps に調整されています。OS X で実行すると、event.get() はフレームごとにキューに入れられた 2 つを超えるマウス イベントを返すことはありません。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