我有一个应用程序通过蓝牙从iOS应用程序接收数据,它应该移动鼠标光标。
问题是我在y轴上得到了一些奇怪的功能(x很好)。
输入看起来像dx~dy
,其中dx,dy是移动光标的值。这是一个例子:
-3.0〜2.0
我输出的一个例子:
鼠标位置:(596.0,309.0)新鼠标位置:(603.0,311.0)
鼠标位置:(603.0,489.0)新鼠标位置:(610.0,491.0)
鼠标位置:(610.0,309.0)新鼠标位置:(615.0,311.5)
鼠标位置:(615.0,489.0)新鼠标位置:(618.0,491.0)
鼠标位置:(618.0,309.0)新鼠标位置:(618.5,312.5)
正如您所看到的那样,它的 y 坐标比较高的坐标低。所以基本上鼠标上下都会“跳跃”。
这是我处理输入的代码:
let mouseLoc = NSEvent.mouseLocation()
let newLoc = CGPoint(x: mouseLoc.x-CGFloat(x), y: mouseLoc.y+CGFloat(y))
CGDisplayMoveCursorToPoint(0, newLoc)
编辑:在测试用例中,我的值介于0和2之间,因此两种状态之间无法有100的差异
答案 0 :(得分:2)
Cocoa和Core Graphics(a.k.a。Quartz)使用不同的坐标系。在Cocoa中,原点位于主屏幕的左下方,y随着您的上升而增加。在Core Graphics中,原点位于主屏幕的左上角,y随着您的下降而增加。
由于您正在使用Core Graphics功能移动光标,因此需要从Cocoa的坐标系转换。
var mouseLoc = NSEvent.mouseLocation()
mouseLoc.y = NSHeight(NSScreen.screens()![0].frame) - mouseLoc.y;
// etc.