2010-12-28 9 views
6

Estoy usando Cocos2d, que es un marco para crear juegos de iPhone. Recientemente lanzaron el soporte Mac, y estoy haciendo un juego simple para Mac.Cocos2d - Mac: ¿busca eventos de teclado?

Sin embargo, no tengo ni idea de cómo comprobar cuándo se presiona la tecla X en el teclado de la Mac.

Objective-C

Respuesta

9

que debe hacer:

self.isKeyboardEnabled = YES; 

entonces usted puede utilizar para recibir mensajes de pulsaciones de teclas:

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

Esto debe hacerlo.

Consulte aquí para obtener más información:

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

+0

Seguí eso, y te juro que hice casi todo lo que él hizo, y sin embargo, mi reproductor no se mueve. Mi jugador es una clase que contiene todo el procesamiento de animación de sprites, etc. La clase tiene dos funciones, mover hacia la derecha y hacia la izquierda. Las funciones se llaman en la escena, cuando se detectan las claves. Pero no funcionará ... En su lugar, estoy usando ccKeyRight y ccKeyLeft, pero ¿existe una gran diferencia? – Voldemort

+0

ccKeyUp y ccKeyDown son para "presionar el teclado" y "liberar el teclado", no las flechas hacia arriba y hacia abajo en el teclado; debes usar los dos métodos que coloqué arriba y luego verificar el código clave (si sigues la información del enlace verá donde comparan el valor "código clave", cada tecla en el teclado tiene un valor diferente "código clave" que determina la tecla real presionada. No hay una lista "ccKey *" para cada clave individual, solo hay ccKeyUp y ccKeyDown para determinar si se presiona una tecla (cualquier tecla), y la información sobre esa clave se pasa luego a través del objeto "evento" –

5

Aquí se muestra un ejemplo:

-(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: código de caracteres se basa en el código ASCII.

Cuestiones relacionadas