如何在视频游戏风格的Cocoa应用程序中收集键输入? [英] How do I collect key input in a video-game style Cocoa app?
问题描述
我在黑客一个简单的Cocoa应用程序,使块像在视频游戏在屏幕上移动。我需要检测按键,但我不会有一个对话框的文本输入字段。
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 a dialog box would have.
如何获取按键没有文本控件?
How do I get key presses without text controls? In particular, I need to get arrow keys.
推荐答案
在游戏视图中,定义keyUp和keyDown方法:
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
a href =http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html =nofollow noreferrer> NSView 和 NSEvent 了解更多信息。请注意,keyDown和keyUp事件实际上是在 NSResponder ,NSView的超类。
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.
这篇关于如何在视频游戏风格的Cocoa应用程序中收集键输入?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!