2010-12-28 7 views
6

私はiPhoneゲームを作成するためのフレームワークであるCocos2dを使用しています。 最近、彼らはMacのサポートをリリースしました。私はMac用の簡単なゲームを作っています。Cocos2d - Mac:キーボードイベントを確認しますか?

しかし、私はMacのキーボードでXキーが押されたときをチェックする方法については知らない。

あなたが何をすべきObjective-Cの

答えて

9

self.isKeyboardEnabled = YES; 

あなたは、キーの押下のメッセージを受信するために使用することができます。

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

これはそれを行う必要があります。

は、詳細についてはこちらを参照してください:ここで

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

+0

私はそれに従いました、私は彼がやったことをかなり誓いましたが、私のプレーヤーは動かないでしょう。 私のプレーヤーオブジェクトは、すべてのスプライトアニメーション処理などを含むクラスです。クラスには、右と左の2つの機能があります。キーが検出されると、シーン内で関数が呼び出されます。 しかし、私は代わりにccKeyRightとccKeyLeftを使用していますが、大きな違いはありますか? – Voldemort

+0

ccKeyUpとccKeyDownは、キーボードの上下の矢印ではなく、「キーボードプレス」と「キーボードリリース」用です。上記の2つの方法を使用して、キーコードを確認する必要があります。あなたが "keyCode"の値を比較する場所を見ると、キーボードの各キーには実際に押されたキーを決定する "keyCode"の値が異なります。各キーの "ccKey *"リストはありません。 ccKeyDownキー(任意のキー)が押されたことを判断し、そのキーに関する情報が「イベント」オブジェクトを介して渡される –

5

は一例です:

-(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コードに基づいています。

関連する問題