【问题标题】:Cocos2d - Mac: Check for keyboard events?Cocos2d - Mac:检查键盘事件?
【发布时间】:2011-05-31 10:52:04
【问题描述】:

我正在使用 Cocos2d,它是一个用于创建 iPhone 游戏的框架。 最近他们发布了 Mac 支持,我正在为 Mac 制作一个简单的游戏。

但是,我对如何检查 Mac 键盘上何时按下 X 键一无所知。

目标-C

【问题讨论】:

    标签: objective-c events macos keyboard cocos2d-iphone


    【解决方案1】:

    你应该这样做:

    self.isKeyboardEnabled = YES;
    

    然后您可以使用接收按键消息:

    -(void) ccKeyUp:(NSEvent*)event;
    -(void) ccKeyDown:(NSEvent*)event;
    

    应该这样做。

    请参阅此处了解更多信息:

    http://www.cocos2d-iphone.org/forum/topic/11725

    【讨论】:

    • 我确实遵循了这一点,我发誓我做了他所做的几乎所有事情,但我的球员不会移动。我的播放器对象是一个包含所有精灵动画处理等的类。该类有两个功能,向右移动和向左移动。当检测到按键时,会在场景中调用这些函数。但是不行....我使用的是 ccKeyRight 和 ccKeyLeft,但是,有很大的区别吗?
    • ccKeyUp 和 ccKeyDown 用于“键盘按下”和“键盘释放”,而不是键盘上的上下箭头 - 您需要使用我上面放置的两种方法,然后检查键码(如果您按照链接中的信息,您将看到他们比较“keyCode”值的位置,键盘上的每个键都有一个不同的“keyCode”值,它决定了实际按下的键。每个人没有“ccKey*”列表键,只有 ccKeyUp 和 ccKeyDown 用于确定是否按下了某个键(任意键),然后通过“事件”对象传入有关该键的信息
    【解决方案2】:

    这是一个例子:

    -(id) init
    {
        if( (self=[super init])) 
        {
            .
            .
            .
    
            self.isKeyboardEnabled = YES ;
    
            .
            .
            .
        }
    }
    
    - (void) ccKeyDown : (NSEvent*) KeyDownEvent
    {
        NSString *str_1 = [KeyDownEvent characters];
        unichar ch = [str_1 characterAtIndex:0];
    
        if ( ch == 97)                  // if 'a' Button Pressed Down
        {
            if ( canMoveRight == NO)
            {
                canMoveLeft = YES ;
            }
    
        }
        else if ( ch == 100 )           // if 'd' Button Pressed Down
        {
            if ( canMoveLeft == NO)
            {
                canMoveRight = YES ;
            }
        }
    }
    
    - (void) ccKeyUp : (NSEvent*) KeyDownEvent
    {
    
        NSString *str_1 = [KeyDownEvent characters];
        unichar ch = [str_1 characterAtIndex:0];
    
        if ( ch == 97)                  // if 'a' Button Released
        {
            canMoveLeft = NO ;
        }
        else if ( ch == 100 )           // if 'd' Button Released
        {
            canMoveRight = NO ;
        }
    }
    

    PS : 字符代码是基于它们的 ASCII 码。

    【讨论】:

      猜你喜欢
      • 2012-07-06
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 2020-06-22
      • 2014-06-22
      • 2011-01-29
      • 1970-01-01
      相关资源
      最近更新 更多