2012-01-30 115 views
2

这是实现基于键盘的游戏控制器。 左/右箭头使角色走路。 shift +左/右使字符运行。Objective-C:在按下另一个键时检测到“shift”按键

下面是我使用至今代码:

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

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

如果偏移按箭头键之前按下这个工作正常。 但是,如果箭头键被按下,你需要加速,按shift不会导致发生什么事......

所以,我认为这是这样回答的: https://stackoverflow.com/a/420691/987818

但我不了解此NSResponder的使用位置。有关信息,我使用Cocos2D(objc游戏引擎)。

感谢:-) 任何线索J.

+1

有关实现flagsChanged的示例,请查看Kobold2D的KKInput实现:https://github.com/kobold2d/Kobold2D/blob/master/Kobold2D/__Kobold2D__/kobold2d/KKInputKeyboard.m – LearnCocos2D 2012-01-30 22:30:26

+0

@ LearnCocos2D嗨,感谢Steffen。 KK文件解决了所有这一切!好东西,现在我的CCLayer实现使用内置的 - (BOOL)ccFlagsChanged:(NSEvent *)事件正确地处理shift键;太好了!祝你有美好的一天。 – Jem 2012-01-31 08:43:45

回答

3

您需要在同一类中实现flagsChanged:您实现这个-keyDown: method,或者只是任何NSResponder类的子类,也许能够抓住这个事件(如的NSApplication )。

+0

嘿谢谢。确实,它现在可行! – Jem 2012-01-31 08:44:27