[ Duke Nukem @ 19.03.2008. 13:17 ] @
Problem je sa obradom dogadjaja GameCanvasa (sledecu funkciju poziva glavna nit na svakih 50 ms)

Code:

protected void checkPress() // obrada dogadjaja sa tastature telefona
{
int key; // nevazno
try
 {
int keyState = getKeyStates();

      if ((keyState & KEY_NUM1) != 0)
                {

              key = 1; // jedinica pretisnuta
              System.out.println("Stiso si 1"  );

              }
      else if ((keyState & KEY_NUM2) != 0)
                {

              key = 2; // dvojka pretisnuta
              System.out.println("Stiso si 2");
              
              }    
      else if ((keyState & KEY_NUM3) != 0)
                {
              
              key = 3; //trojka  pretisnuta
              System.out.println("Stiso si 3");
              
              }          
      else if ((keyState & KEY_NUM4) != 0)
                {
              
              key = 4; //cetvorka  pretisnuta
              System.out.println("Stiso si 4");
              
              }          
      else if ((keyState & KEY_NUM5) != 0)
                {
              
              key = 5; // jedinica pretisnuta
              System.out.println("Stiso si 5");
              
              }     
      else if ((keyState & KEY_NUM6) != 0)
                {
              
              key = 6; // jedinica pretisnuta
              System.out.println("Stiso si 6");
              
              }
              else
               {
                
//                //
              
               }
  
    
               
      
    } catch(Exception e)
       {    
        displayError(e); // korinicki defnisano
       }     
    // System.out.println("key = " + key); // temp  


    
     
      }


Kod mene reaguje (ispisuje konzolu) samo ako se pritisne taster 2, 4 i 6. Kada se pritisne 6 prikazuje da je pritisnuo 1 ?
Probao sam da direktno hvatam i obradjujem keyState promenjivu ali ucinak je slab.

Pitanje: Zasto tasteri 1 , 3 5 ne reaguju a 6 vrava da je pritisnuta 1 ????

Hvala.
[ -pixi- @ 20.03.2008. 22:14 ] @
Kao prvo kada provjeravas jeli jedan variable jedank drugom to se nepise:

Code:
if((keyState & KEY_NUM1) != 0)

Nego:
Code:
if(keyState == KEY_NUM1)


Ako zelis da provjeris jesu li variable istog tipa onda, koliko se sjecam, postoji metoda equals(). Googlaj malo za ovo.
Osim toga bolje bi bilo da podjelis ovo kontrolises switch case-ovima:

Code:

switch(keyState){
  case KEY_NUM1:
    System.out.println("Stiso si 1");
    break;
  case KEY_NUM2:
    System.out.println("Stiso si 2");
    break;  case KEY_NUM3:
    ...
    ...
}

[ Duke Nukem @ 23.03.2008. 07:13 ] @
Hvala na odgovoru nije pomoglo jer je problem banalan, naime ne slaze se dokumentacija (MIDAP 2.0 JSR 118) sa toolkitom (Version 2.2 (25.10.2004. 22.21) Java vendor: Sun Microsystems Inc. Java version: 1.6.0_03 Operating system: Windows XP
Operating system version: 5.1 Architecture: x86) koje koristim i to:

U dokumentaciji stoji za klasu Canvas sledeca konstanta
public static final int KEY_NUM1 cija je vresnost 49 ,za taster 2 je 50 i tako redom ali realno je stanje drugacije
Naime prostim stampanjem na konzoli System.out.println(" key state =" + keyState);
dobije se : "taster 1" odgovara 512 "taster 2" odgovara 2 "taster 3" odgovara 1024 itd...

Napominjem da sam toolkit i dokumentaciju downloadovao odjednom pa sam predpostavljao da pasuju.