Цель-C: Обнаружение нажатия клавиши «Shift» при нажатии другой клавиши - PullRequest
2 голосов
/ 30 января 2012

Это для реализации игрового контроллера на основе клавиатуры. Стрелки влево / вправо заставляют персонажа ходить. 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.

1 Ответ

3 голосов
/ 30 января 2012

Вам необходимо реализовать flagsChanged: в том же классе, где вы реализуете этот -keyDown: метод , или просто любой подкласс NSResponder, который может перехватить это событие (например, NSApplication).

...