【问题标题】:How to get the status of some keys on the keyboard on the mac?如何获取mac键盘上某些键的状态?
【发布时间】:2011-11-02 06:20:07
【问题描述】:

我正在使用 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。

如何获取当前键盘状态来检查几个键的状态?

【问题讨论】:

    标签: keyboard cocos2d-iphone key macos


    【解决方案1】:

    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 的文章中了解更多信息。

    【讨论】:

      猜你喜欢
      • 2011-08-11
      • 2014-03-08
      • 2011-03-28
      • 2011-04-08
      • 2022-01-24
      • 2012-05-28
      • 2014-08-19
      • 1970-01-01
      • 2021-02-22
      相关资源
      最近更新 更多