在Mac OSX上,我尝试了两种方法来获取鼠标移动事件的deltaX和deltaY:
deltaX
/ deltaY
NSEvent
kCGMouseEventDeltaX
/ kCGMouseEventDeltaY
CGEventRef
但大多数情况下,返回值为(0,0)或(aValue,0)或(0,aValue),而不是非常准确的值。
有什么建议吗?感谢。
答案 0 :(得分:0)
我不是在我的开发机器上测试它,但我可以参考我们用于此类问题的源代码
首先,List<int>
和deltaX
对您不起作用很奇怪?
我会尝试的一件事是
deltaY
查看事件的位置是否实际移动,而不使用断点。如果您使用断点测试增量,NSLog(@"POINT: %@", NSStringFromPoint([event locationInWindow]);
可能会频繁触发您看不到大的增值
但无论如何,我注意到的一件事是,在我们的应用中,我们实际上也没有使用mouseMoved
。也许是因为当天的开发人员遇到了和你一样的问题?但仍然很奇怪的IMO。当我本周末回到家时,我想更多地测试一下
我们实际上有一个名为deltaX/deltaY
的{{1}}属性,每次鼠标移动时,我们做的最后一件事就是将NSPoint
存储到该属性中。然后,第一次我们将lastPoint
与当前locationInWindow
进行比较。
但老实说,这似乎是一个糟糕的解决方案,我真的不确定为什么我们不只是使用lastPoint
或locationInWindow
。我建议做更多调试(用deltaX
)来弄清楚使用这些属性会出现什么问题