当前位置:  开发笔记 > 前端 > 正文

如何在视频游戏风格的Cocoa应用程序中收集键输入?

如何解决《如何在视频游戏风格的Cocoa应用程序中收集键输入?》经验,为你挑选了1个好方法。

我正在攻击一个简单的Cocoa应用程序,以便像电子游戏一样让屏幕在屏幕上移动.我需要检测按键,但我不会像对话框那样有文本输入字段.

如何在没有文本控件的情况下获得按键操作?特别是,我需要获得箭头键.



1> Jason Coco..:

在游戏视图中,定义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的超类)上定义的.


需要注意的是,keyUp:和keyDown:如果用户只按下修改键,请不要调用它,例如shift,ctrl,alt或cmd.对于大多数应用来说,这当然是合理的行为,但可能不适用于游戏.如果您希望在按下修改键时通知您的应用,您可以实现[flagsChanged:](http://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSResponder_Class/Reference /Reference.html#//apple_ref/occ/instm/NSResponder/flagsChanged :).
推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有