How do I collect key input in a video-game style Cocoa app?

前端 未结 1 1866
一生所求
一生所求 2020-12-15 10:09

I\'m hacking on a simple Cocoa app to make blocks move around the screen like a video game. I need to detect key presses, but I\'m not going to have text entry fields like

相关标签:
1条回答
  • 2020-12-15 10:48

    In your game view, define the keyUp and keyDown methods:

    @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
    

    See the documentation for NSView and NSEvent for more info. Note that the keyDown and keyUp events are actually defined on NSResponder, the super class for NSView.

    0 讨论(0)
提交回复
热议问题