OS Xゲームでは、これはキーボードとマウスイベントを取得する方法として推奨されていました。誰でも知っているnextEventMatchingMask:untilDate:inMode:dequeue:イベントを返すのに何ミリ秒かかりますか?
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
for(;;)
{
NSEvent* event = [NSApp nextEventMatchingMask:NSAnyEventMask untilDate:nil inMode:NSDefaultRunLoopMode dequeue:YES];
if(!event) break;
processevent(event);
...
}
[pool release];
ゲームメインループ(クロスプラットフォーム)で呼び出されます。
OSX 10.5.Xの最新バージョンでは、イベントが発生したときに突然このイベントが数ミリ秒かかるため、ゲームのフレームレートはイベントが発生したときにいつも影響を受けます。複数のイベントがある場合は、遅いMacではフレームごとに10ミリ秒かかることがあります。
これはなぜですか?それとも、ゲームにあまり影響を与えずにイベントを得るために何ができるのですか?
マウスの位置を手動で取得することで、マウスのイベントを自分で管理していましたが、画面の端に近づくと中央に歪みましたが、動きの障害になります(カーソルが隠れている場合のみコース)。
他の選択肢は、すでにジョイスティック用に行っているHIDマネージャからのものですが、HIDはそれほど明確ではありません。
Macが高速になればなるほど、これらのヒッチがイベントを受け取ることが顕著になります。