Как собрать ввод ключа в приложении Cocoa в стиле видеоигры?

def to_time(seconds):
  delta = datetime.timedelta(seconds=seconds)
  return str(delta.days) + 'd ' + (datetime.datetime.utcfromtimestamp(0) + datetime.timedelta(seconds=delta.seconds)).strftime('%H:%M')
11
задан Ned Batchelder 9 November 2008 в 17:05
поделиться

1 ответ

В Вашем игровом представлении определите keyUp и keyDown методы:

@interface MyView : NSView
-(void)keyUp:(NSEvent*)event;
-(void)keyDown:(NSEvent*)event;
@end

@implementation MyView

-(void)keyUp:(NSEvent*)event
{
    NSLog(@"Key released: %@", event);
}

-(void)keyDown:(NSEvent*)event
{   
    // I added these based on the addition to your question :)
    switch( [event keyCode] ) {
        case 126:   // up arrow
        case 125:   // down arrow
        case 124:   // right arrow
        case 123:   // left arrow
            NSLog(@"Arrow key pressed!");
            break;
        default:
            NSLog(@"Key pressed: %@", event);
            break;
    }
}
@end

См. документацию для NSView и NSEvent для большего количества информации. Обратите внимание, что keyDown и keyUp события на самом деле определяются на NSResponder, суперклассе для NSView.

14
ответ дан 3 December 2019 в 08:31
поделиться