Oto przykład:
-(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: kod znaku jest oparty na kodzie ASCII.
Podążyłem za tym i przysięgam, że zrobiłem właściwie to, co zrobił, a jednak mój odtwarzacz się nie ruszy. Mój obiekt gracza jest klasą zawierającą wszystkie przetwarzanie animacji sprite itp. Klasa ma dwie funkcje, przesuń w prawo iw lewo. Funkcje są wywoływane w scenie po wykryciu kluczy. Ale nie zrobię .... Używam ccKeyRight i ccKeyLeft zamiast, ale czy jest duża różnica? – Voldemort
ccKeyUp i ccKeyDown służą do "naciśnięcia klawisza" i "zwolnienia klawisza", a nie do strzałek w górę i w dół na klawiaturze - musisz użyć dwóch metod, które umieściłem powyżej, a następnie sprawdzić kod (jeśli postępujesz zgodnie z informacjami w link zobaczysz, gdzie porównują wartość "keyCode", każdy klawisz na klawiaturze ma inną wartość "keyCode", która decyduje o naciśnięciu właściwego klawisza .Nie ma listy "ccKey *" dla każdego pojedynczego klucza, jest tylko ccKeyUp i ccKeyDown do określenia, czy naciśnięty jest klawisz (dowolny klawisz), a informacja o tym kluczu jest przekazywana za pośrednictwem obiektu "event" –