所以我有一个在cocos2D中内置的Mac游戏。
我用手势模拟键盘命令来控制我的角色,而且效果很好。
我把我的游戏提交给了AirSpace商店,它被拒绝了,理由是Leap也应该用来控制我的菜单,我想这是相当公平的。
事情是为了我的生命,我不知道这是怎么做到的。没有任何示例可以向我展示如何实现它,而SDK示例中也没有说明这一点的东西。
有没有人愿意分享的例子,我只需要它劫持我的光标,并允许点击时,通过一个按钮。我真的不认为简单的菜单导航就需要这么复杂的东西。
发布于 2013-08-06 07:28:45
如果这是只使用Mac的游戏,您应该可以访问Quartz事件api。这是在OS中生成鼠标事件的最简单方法.
我建议简单地跟踪手掌(手)的位置,并在此基础上移动光标。
我的手掌跟踪就是这样的:
float handX = ([[hand palmPosition] x]);
float handY = (-[[hand palmPosition] y] + 150);
"+ 150“是跳跃装置上方的毫米数,用作”0“位置。在那里,您可以根据手偏移量从0移动光标。
用于移动光标的函数(使用Quartz):
- (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];
这个电话会移动鼠标。基本上,您只需传递鼠标的新位置,以及相应的三角洲,相对于最后一个光标位置。
我可以提供更多的例子,例如获得鼠标位置的例子,点击鼠标,甚至一个完整的鼠标移动程序。
编辑1:
要使用Quartz处理单击和拖动,您可以调用上面仅在kCGEventLeftMouseDown
中传递的相同函数。
问题是,为了拖动,不能调用kCGEventMouseMoved
,必须在拖动发生时传递kCGEventLeftMouseDragged
。
一旦完成拖动,您必须传递一个kCGEventLeftMouseUp
。
要执行一次单击(没有拖动),您只需调用鼠标向下,然后立即向上,没有任何拖动.
https://stackoverflow.com/questions/18070656
复制相似问题