2010-12-28 10 views
6

Sto usando Cocos2d, che è un framework per la creazione di giochi per iPhone. Recentemente hanno rilasciato il supporto per Mac e sto creando un semplice gioco per Mac.Cocos2d - Mac: verificare gli eventi della tastiera?

Tuttavia, non ho idea di come controllare quando il tasto X viene premuto sulla tastiera del Mac.

Objective-C

risposta

9

Si dovrebbe fare:

self.isKeyboardEnabled = YES; 

È possibile utilizzare per ricevere i messaggi per la pressione dei tasti:

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

Questo dovrebbe farlo.

consultare qui per maggiori informazioni:

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

+0

L'ho seguito, e giuro che ho fatto più o meno quello che ha fatto, eppure il mio giocatore non si muoverà. Il mio oggetto giocatore è una classe che contiene tutte le elaborazioni di animazione sprite ecc. La classe ha due funzioni, sposta a destra e a sinistra. Le funzioni sono richiamate nella scena, quando vengono rilevati i tasti. Ma non lo farà .... Sto usando ccKeyRight e ccKeyLeft invece, ma c'è una grande differenza? – Voldemort

+0

ccKeyUp e ccKeyDown sono per "keyboard press" e "keyboard release", non le frecce su e giù sulla tastiera - è necessario utilizzare i due metodi sopra riportati e quindi controllare il keycode (se si seguono le informazioni nel link vedrai dove confrontano il valore "keyCode", ogni tasto della tastiera ha un valore diverso "keyCode" che determina il tasto premuto. Non esiste un elenco "ccKey *" per ogni singola chiave, c'è solo ccKeyUp e ccKeyDown per determinare se viene premuto un tasto (qualsiasi tasto) e le informazioni su quella chiave vengono passate attraverso l'oggetto "evento" –

5

Ecco un esempio:

-(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: codice carattere si basa sulla loro codice ASCII.

Problemi correlati