gpt4 book ai didi

objective-c - 我的 cocoa 应用程序无法捕获关键事件

转载 作者:行者123 更新时间:2023-12-03 18:05:53 26 4
gpt4 key购买 nike

我通常为 iPhone 开发。但现在尝试在 Cocoa 桌面应用程序中制作乒乓球游戏。效果很好,但我找不到捕获关键事件的方法。

这是我的代码:

#import "PongAppDelegate.h"

#define GameStateRunning 1
#define GameStatePause 2

#define BallSpeedX 10
#define BallSpeedY 15

@implementation PongAppDelegate

@synthesize window, leftPaddle, rightPaddle, ball;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

gameState = GameStateRunning;
ballVelocity = CGPointMake(BallSpeedX, BallSpeedY);
[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(gameLoop) userInfo:nil repeats:YES];
}


- (void)gameLoop {
if(gameState == GameStateRunning) {
[ball setFrameOrigin:CGPointMake(ball.frame.origin.x + ballVelocity.x, ball.frame.origin.y + ballVelocity.y)];

if(ball.frame.origin.x + 15 > window.frame.size.width || ball.frame.origin.x < 0) {
ballVelocity.x =- ballVelocity.x;
}

if(ball.frame.origin.y + 35 > window.frame.size.height || ball.frame.origin.y < 0) {
ballVelocity.y =- ballVelocity.y;
}
}
}


- (void)keyDown:(NSEvent *)theEvent {
NSLog(@"habba");
// Arrow keys are associated with the numeric keypad
if ([theEvent modifierFlags] & NSNumericPadKeyMask) {
[window interpretKeyEvents:[NSArray arrayWithObject:theEvent]];
} else {
[window keyDown:theEvent];
}
}

- (void)dealloc {
[ball release];
[rightPaddle release];
[leftPaddle release];
[super dealloc];
}

@end

最佳答案

如果您的 PongAppDelegate 类不是 NSResponder 固有的,它不会响应 -keyDown 事件。

即使在小型应用程序中,您也希望使用 Controller 子类,而不是在应用程序委托(delegate)中转储功能。

关于objective-c - 我的 cocoa 应用程序无法捕获关键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2439493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com