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.
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
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" –