【发布时间】:2020-11-04 05:52:27
【问题描述】:
我在 SpriteKit 中创建了自己的按钮类 (FKButton)。我希望它拥有我将来需要的大部分功能,因此它包括快捷键、动作、声音等。除了keyDown(with event: NSEvent) 功能(顺便说一句。“快捷键”是与按下按钮本身具有相同效果的键。例如,在键盘上按下 Enter 通常与按下屏幕上的按钮具有相同的效果)。我将acceptsFirstResponder 和isUserInteractionEnabled 都设置为true。我为按钮类中的keyDown 函数编写的代码如下所示:
override func keyDown(with event: NSEvent) {
print("Detected key press: \(event.keyCode).")
if shortcutKeys.contains(event.keyCode) {
actionAtClick()
}
}
该类继承自SKNode,因为我想添加另一个继承自SKScene 的类。这是课程:
class GameScene: SKScene {
let button = FKButton(size: CGSize(width: 200, height: 100), text: "Button", fontSize: 40)
override func didMove(to view: SKView) {
button.shortcutKeys = [36,76]
self.addChild(button)
}
}
我刚刚删除了所有不相关的内容(例如 button.fontColor = NSColor.white 等)。当我用鼠标单击按钮时,会发生正确的操作,但由于某种原因,它不响应键盘输入。我不明白出了什么问题。我知道这对您来说也可能很难,但所有提示都值得赞赏。谢谢。
注意:这不是 cmets 中提到的问题的重复。我没有像提到的帖子中的人那样将我的代码放在 AppDelegate 中。因此,它没有解决这个问题。
【问题讨论】:
-
谢谢,可惜没有。
-
什么是 FKButton?
-
快捷键?这是什么?
-
哦,FKButton 只是类的名称。快捷键是您可以在键盘上按下的键,其作用与按下按钮相同。它通常用于注册表单:通常您可以按 Enter 而不是按实际按钮,但它的作用相同。抱歉不清楚。
标签: swift macos button sprite-kit keydown