我对objC和游戏编程非常陌生,所以如果这是你们很多人都可以做的问题,请原谅[self facepalm];
我试图设置一个游戏循环(NSObject)作为控制器。还有一个NSOpenGLView通过Interface Builder (MainMenu.xib)连接到窗口。循环应该处理所有键盘输入并管理在视图上绘制的内容。
我弄清楚了,我可以用- (void)keyDown:(NSEvent *)theEvent捕获视图上的键事件。我如何将这个输入传递给控制器/循环?
为了发送keyinput到循环,我使用了带有postNotificationName的NSNotificationCenter。但它似乎又慢又"滞后"。这不可能是正确的做法。
任何提示都会很棒!
使用与NSControl
相同的方式来传递事件。或者像iOS的UIControl's
addTarget:action:forControlEvents:
那样做。
这个想法是将一些对象注册为此类事件的"侦听器"(目标),以及在事件触发时应该调用的方法(操作)。您可以通过为视图声明一些协议,并使需要接收事件的每个类符合该协议,从而使事情变得简单。