2012-01-30 146 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