我在我的应用程序中使用SKView * skView = (SKView *)self.view;
// ...
GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"];
scene.scaleMode = SKSceneScaleModeAspectFill;
scene.size = skView.bounds.size;
[skView presentScene:scene];
。已经设置了几个鼠标事件处理程序:鼠标按下,鼠标按下等。但是,我还想响应键盘输入:如果用户按下任何功能键,我想执行一个单独的过程(事件处理程序)而不是Mouse *事件处理函数。但我也需要在新程序中使用鼠标位置。
我如何对此进行编码,因为TPaintBox
不支持任何按键事件?
TPaintBox
答案 0 :(得分:8)
TPaintBox
不是来自TWinControl
,而是来自TGraphicControl
,这意味着它无法接收输入焦点,因此它没有对键盘事件作出反应的功能。
可能的解决方案:
OnKeyPress
事件,并启用窗体的KeyPreview
属性。ShortCut
属性添加操作,并实现其OnExecute
事件处理程序。 (另见:When does a ShortCut fire?)。OnShortCut
事件处理程序。TWinControl
并实现该容器的OnKeyPress
事件。对于鼠标和键盘输入的组合,请检查鼠标事件的Shift
参数或使用Win32 GetKeyState()
和GetKeyboardState()
函数。