如果這是一個僅限Mac的遊戲,您應該可以訪問Quartz事件api。這是在OS X中生成鼠標事件的最簡單方法...
我建議只需跟蹤手掌(手)位置,然後根據該位置移動光標。
這是我做我的手掌追蹤:
float handX = ([[hand palmPosition] x]);
float handY = (-[[hand palmPosition] y] + 150);
的「+ 150」是大躍進設備上面毫米的數量,爲「0」的位置使用。
- (void)mouseEventWithType:(CGEventType)type loc:(CGPoint)loc deltaX:(float)dX deltaY:(float)dY
{
CGEventRef theEvent = CGEventCreateMouseEvent(NULL, type, loc, kCGMouseButtonLeft);
CGEventSetIntegerValueField(theEvent, kCGMouseEventDeltaX, dX);
CGEventSetIntegerValueField(theEvent, kCGMouseEventDeltaY, dY);
CGEventPost(kCGHIDEventTap, theEvent);
CFRelease(theEvent);
}
和實例函數調用:
[self mouseEventWithType:kCGEventMouseMoved loc:CGPointMake(newLocX, newLocY) deltaX:dX deltaY:dY];
從那裏你可以根據手從0
我用移動(使用Quartz)光標功能失調移動光標
此調用將移動鼠標。基本上,您只需傳遞鼠標的新位置和相應的增量,相對於最後一個光標位置。
我可以提供更多的例子,如用於獲取鼠標位置,點擊鼠標,甚至是完整的鼠標移動程序的例子...
編輯1:
爲了處理單擊並拖動石英,您可以調用與上述相同的功能,只能通過kCGEventLeftMouseDown
。
問題在於,爲了拖動您不能撥打kCGEventMouseMoved
,您必須在發生拖動時通過kCGEventLeftMouseDragged
。
拖動完成後,您必須通過kCGEventLeftMouseUp
。
做單點擊(無阻力),您只需撥打鼠標下來,然後向上權後,沒有任何拖...
這完美地工作,非常感謝。唯一需要弄清楚的是如何實現持續的點擊和拖拽。因爲我有一個從我的iOS版本採用的頁面控制層,我想保留在 – PocketTim
@TimHugall好吧我添加了點擊和拖動編輯... – Teak
真棒,謝謝。我知道這會幫助很多其他人,因爲有很多人在搜索,但沒有多少人在回答。 – PocketTim