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

Capitolo 64: Polling dei tasti e double buffering.

 

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.

 

 
Vai all'inizio della pagina