Macos 在OSX应用程序中,如何允许跳跃运动控制光标?

Macos 在OSX应用程序中,如何允许跳跃运动控制光标?,macos,cocos2d-iphone,leap-motion,Macos,Cocos2d Iphone,Leap Motion,所以我有一个MacOSX内置的cocos2D游戏 我用手势来模拟键盘命令来控制我的角色,效果非常好 我把我的游戏提交给了AirSpace商店,但它被拒绝了,理由是Leap也应该用来控制我的菜单,我想这很公平 事情是以我的生命为代价的,我不知道这是怎么做到的。没有任何示例向我展示如何实现它,SDK示例中也没有任何内容可以清楚地说明这一点 有没有人愿意分享一些例子,我只需要它来劫持我的光标,并在按住按钮时允许点击。我真的不认为仅仅为了基本的菜单导航就需要这么复杂的东西。如果这是一款仅限Mac的游戏,

所以我有一个MacOSX内置的cocos2D游戏

我用手势来模拟键盘命令来控制我的角色,效果非常好

我把我的游戏提交给了AirSpace商店,但它被拒绝了,理由是Leap也应该用来控制我的菜单,我想这很公平

事情是以我的生命为代价的,我不知道这是怎么做到的。没有任何示例向我展示如何实现它,SDK示例中也没有任何内容可以清楚地说明这一点


有没有人愿意分享一些例子,我只需要它来劫持我的光标,并在按住按钮时允许点击。我真的不认为仅仅为了基本的菜单导航就需要这么复杂的东西。

如果这是一款仅限Mac的游戏,你应该可以访问Quartz事件api。这是在OS X中生成鼠标事件的最简单方法

我建议只需跟踪手掌(手)的位置,并在此基础上移动光标

这是我如何进行手掌跟踪的:

float handX = ([[hand palmPosition] x]);
float handY = (-[[hand palmPosition] y] + 150);
“+150”是Leap设备上方的毫米数,用作“0”位置。从此处,您可以根据从0开始的手部偏移移动光标

我用于移动光标的函数(使用石英):

以及一个示例函数调用:

[self mouseEventWithType:kCGEventMouseMoved loc:CGPointMake(newLocX, newLocY) deltaX:dX deltaY:dY];
此调用将移动鼠标。基本上,您只需传递鼠标的新位置,以及相对于最后一个光标位置的相应增量

我可以提供更多的例子,例如获取鼠标位置的例子,点击鼠标的例子,甚至是一个完整的鼠标移动程序

编辑1:

要使用Quartz处理单击和拖动操作,您可以调用与上述相同的函数,只需传入
kCGEventLeftMouseDown

问题是,要进行拖动,您不能调用
kCGEventMouseMoved
,而必须在拖动过程中传递
kCGEventLeftMouseDragged

拖动完成后,您必须通过一个
kCGEventLeftMouseUp


要进行一次单击(无需拖动),只需将鼠标按下,然后立即向上移动,无需任何拖动…

非常感谢您的帮助,这一点非常有效。唯一需要解决的问题是如何实现按住鼠标的点击和拖动。因为我有一个从我的iOS版本采用的页面控制层,我想保留它。太棒了,谢谢。我知道这也会帮助很多其他人,因为有很多人在搜索,但回答的人不多。你的解决方案也帮助我解决了我的问题。非常感谢。如果你还在的话,我有一个很难回答的问题。
dX,dY
的确切用途是什么?对于我的应用程序,我只需要设置
loc
变量。更改
dX,dY
根本没有效果。谢谢。dX和dY中的d代表delta。需要正确移动鼠标。如果您删除它,它可能仍然有效,但是您可能会遇到意外的结果。根据以前的鼠标位置计算它们并不困难。如果需要,我可以添加一个例子。我正在用iPhone touchpad移动鼠标光标,做类似的事情,我拥有的数据是当前鼠标位置和当前touchpad X和Y位置。现在如何将触摸板X、Y映射到鼠标位置?
[self mouseEventWithType:kCGEventMouseMoved loc:CGPointMake(newLocX, newLocY) deltaX:dX deltaY:dY];