如何 return NSPoint 的未定义值

How to return an undefined value for NSPoint

我正在学习 swift 并且我正在尝试制作一个简单的应用程序,我可以在其中使用键盘移动对象(默认飞船)。我正在设计一个事件来表示左键按下。由于我不需要将鼠标放在特定位置,因此 NSLocation 对我没有实际用处。官方文档告诉我 return 变量 locationInWindow,这是我的 NSLocation 的 NSPoint,未定义。

我不确定他们的意思。我尝试使用 _undefined 关键字,但后来出现了:

无法将类型“(@autoclosure () -> String, StaticString, UInt) -> _”的值转换为指定类型 'NSPoint'(又名 'CGPoint')

这是我的代码

        var locationInWindow : NSPoint{
        return _undefined
    }

    let movingLeftEvent = NSEvent.keyEvent(with:NSEvent.EventType.keyDown, location: nil, modifierFlags:[], timestamp: [], windowNumber: 0, context: nil , characters: <#String#>, charactersIgnoringModifiers: <#String#>, isARepeat: false, keyCode: <#UInt16#>)

你只需要addLocalMonitorForEvents你的视图控制器

NSEvent.addLocalMonitorForEvents(matching: .keyDown) {
    self.keyDown(with: [=10=])
    return [=10=]
}

并实现您的自定义 keyDown 方法:

override func keyDown(with event: NSEvent) {
    switch event.keyCode {
    case  123:
        // run left arrow code action
        ship.runAction(
            SCNAction.repeatForever(
                SCNAction.rotateBy(x: 0, y: -2, z: 0, duration: 1)
            )
        )
    case  124:
        // run right arrow code action
        ship.runAction(
            SCNAction.repeatForever(
                SCNAction.rotateBy(x: 0, y: 2, z: 0, duration: 1)
            )
        )
    default:
        print("event.keyCode:", event.keyCode)
    }
}

Sample