我正在学习快速开发方法,并且正在尝试制作一个简单的应用程序,使用键盘在该应用程序中移动对象(默认出厂)。我正在设计一个表示左键按下的事件。由于我不需要将鼠标放在特定位置,因此NSLocation对我没有真正的用处。官方文档告诉我返回变量locationInWindow,这是我的NSPoint for NSLocation,未定义。
我不确定这是什么意思。我尝试使用_undefined关键字,但是出现了:
无法将类型'(@autoclosure()-> String,StaticString,UInt)-> _'的值转换为指定的类型'NSPoint'(aka'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#>)
答案 0 :(得分:1)
您只需要addLocalMonitorForEvents
到您的视图控制器
NSEvent.addLocalMonitorForEvents(matching: .keyDown) {
self.keyDown(with: $0)
return $0
}
并实现您的自定义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)
}
}