【问题标题】:Objective-C: Detecting "shift" keypress while another key is pressedObjective-C:在按下另一个键时检测“shift”键按下
【发布时间】:2012-01-30 17:57:30
【问题描述】:

这是为了实现一个基于键盘的游戏控制器。 左/右箭头使角色行走。 shift+left/right 使角色运行。

这是我目前使用的代码:

- (void)keyDown:(NSEvent *)event{

    if ([event modifierFlags] & NSShiftKeyMask) {
        NSLog(@"Shift key pressed");
    }
    // logic follows
}

如果在按箭头键之前按了 shift,这将正常工作。 但是如果按下箭头键并且你需要加速,按下 shift 不会导致任何事情发生......

所以,我看到了这样的答案: https://stackoverflow.com/a/420691/987818

但我不明白这个 NSResponder 的用途。对于信息,我使用 Cocos2D(objc 游戏引擎)。

感谢任何线索 :-) J.

【问题讨论】:

  • 有关实现 flagsChanged 的​​示例,请查看 Kobold2D 的 KKInput 实现:github.com/kobold2d/Kobold2D/blob/master/Kobold2D/__Kobold2D__/…
  • @LearnCocos2D 嘿,谢谢 Steffen。那个KK文件刚刚解决了这一切!好东西,现在我的 CCLayer 实现使用内置的 -(BOOL)ccFlagsChanged:(NSEvent*)event 正确处理 shift 键;好的!祝你有美好的一天。

标签: objective-c cocos2d-iphone shift nsevent nsresponder


【解决方案1】:

您需要在实现此-keyDown: method 的同一类中实现flagsChanged:,或者只是任何可能能够捕获此事件的 NSResponder 子类(例如 NSApplication)。

【讨论】:

    猜你喜欢
    • 2021-02-02
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多