我正在使用cocos2d for mac(1.0.1)
我有这两种方法(类似于苹果方法)
//keyboard delegate is defined - these methods are called
- (BOOL)ccKeyDown:(NSEvent *)event {
unichar key = [[event characters] characterAtIndex:0];
if (key == NSDownArrowFunctionKey) {
// Down arrow pressed
}
if(key == NSUpArrowFunctionKey) {
// Up arrow pressed
return YES;
}
if(key == NSLeftArrowFunctionKey) {
// Left arrow pressed
something = -1.0f;
return YES;
} else if(key == NSRightArrowFunctionKey) {
// Right arrow pressed
something = 1.0f;
return YES;
}
return NO;
}
-(BOOL)ccKeyUp:(NSEvent *)event {
unichar key = [[event characters] characterAtIndex:0];
if (key == NSDownArrowFunctionKey) {
// Down arrow pressed
}
if(key == NSUpArrowFunctionKey) {
// Up arrow pressed
}
if(key == NSLeftArrowFunctionKey || key == NSRightArrowFunctionKey) {
// Left arrow pressed
something = 0.0f;
}
return YES;
}
我想称之为:
something = 0.0f;
如果未按下/按住左箭头键和右箭头键。据我所知,只有在按下并释放按键时才会调用ccKeyUp。如果按下某个键,则为ccKeyDown。
如何获取当前键盘状态以检查其状态的几个键?
答案 0 :(得分:2)
Cocos2D没有提供只检查键盘按键状态的方法。
Kobold2D does。使用Kobold2D,您可以执行以下操作:
KKInput* input = [KKInput sharedInput];
if ([input isKeyDown:KKKeyCode_LeftArrow] == NO &&
[input isKeyDown:KKKeyCode_RightArrow] == NO)
{
something = 0.0f;
}
另外,作为旁注,将字符用于键盘事件是不好的做法:
unichar key = [[event characters] characterAtIndex:0];
问题在于用户的语言环境(键盘输入语言)改变了需要按下哪个键或键组合来生成该字符。例如,当/(斜杠)键方便地位于右Shift键左侧的美国键盘上时,在德语键盘上,用户必须按Shift + 7才能执行已映射到/字符的操作。您可以在我关于Correctly Processing Mac Keyboard Events的文章中了解有关此内容的更多信息。