如何 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)
}
}
我正在学习 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)
}
}