2010-12-28 16 views
6

Używam Cocos2d, która jest platformą do tworzenia gier na iPhone'a. Niedawno wydali wsparcie dla komputerów Mac, a ja tworzę prostą grę na Maca.Cocos2d - Mac: Sprawdź wydarzenia na klawiaturze?

Nie mam pojęcia, jak sprawdzić, kiedy klawisz X jest naciśnięty na klawiaturze komputera Mac.

Objective-C

Odpowiedz

9

należy zrobić:

self.isKeyboardEnabled = YES; 

Następnie można użyć do odbierania wiadomości dla naciśnięć klawiszy:

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

To powinno wystarczyć.

Patrz tutaj, aby uzyskać więcej informacji:

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

+0

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

+0

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

5

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.

Powiązane problemy