NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Guida J2ME - 64: polling dei tasti e double buffering

Guida J2ME, corso base java microedition

 

Il sistema del polling dei tasti costituisce nel conoscere, mediante un solo metodo e un solo valore intero, lo stato dei tasti (quali vengono premuti) in un dato istante.

 

Il metodo in questione, introdotto dalla GameCanvas, è il seguente:

  • getKeyStates()   :   int .

 

Come anticipato, tale metodo restituisce un intero, costituito da una serie di bit (es.: 1010000011001100), dove ogni bit rappresenta un pulsante del dispositivo, ed avrà valore 1 se il tasto corrispondente è premuto, 0 altrimenti.

 

 

Questo sistema permette di rilevare la pressione simultanea di più tasti all'interno dello stesso loop; ovviamente, può rivelarsi necessario chiamare il metodo frequentemente (più volte in un loop, se necessario), per rilevare tutte le pressioni dei tasti (questa rappresenta la differenza principale con i metodi ActionEvent, che vengono lanciati ad ogni pressione di tasto, solo che lì è necessario utilizzare un numero anche elevato di controlli if o case per risalire al tasto premuto).

 

E' possibile, quindi, utilizzare delle maschere di bit da confrontare (con degli AND) con l'intero restituito per scoprire se l'utente ha premuto una determinata combinazione di tasti; a tal fine, GameCanvas mette a disposizione delle costanti che rappresentano i tasti 'tipici' del controllo di un gioco:

  • UP_PRESSED;
  • DOWN_PRESSED;
  • LEFT_PRESSED;
  • RIGHT_PRESSED;
  • FIRE_PRESSED;
  • GAME_A_PRESSED;
  • GAME_B_PRESSED;
  • GAME_C__PRESSED;
  • GAME_D_PRESSED.

 

 

Un'altra novità introdotta da GameCanvas è quella del double buffering; non si tratta, in effetti, di una novità assoluta, in quanto la tecnica del double buffering è nota da anni agli sviluppatori di videogiochi, ma certamente è una novità nelle API mobile (almeno per ora).

 

Tale tecnica permette una gestione ottimale delle fasi di disegno ed aggiornamento dello schermo; per implementarla, è necessario ottenere un contesto grafico, implementare un metodo per il disegno dello schermo ed invocare il metodo:

  • flushGraphics()   :   void;

che aggiorna il display.

 

Pagina di Francesco Milanese (redbaron85) su Facebook   Pagina di Francesco Milanese (redbaron85) su Google Plus   Profilo di Francesco Milanese (redbaron85) su LinkedIn   Pagina di Francesco Milanese (redbaron85) su Twitter   Canale Youtube di Francesco Milanese (redbaron85ct)

Vai all'inizio della pagina