26. Gestire la Tastiera
In questa lezione vedremo brevemente gli eventi che ActionScript 3 ci mette a disposizione per leggere i tasti premuti dall'utente nel Flash Player.
Innanzitutto è necessario sapere che il sistema operativo (Windows, Linux ...) e il browser (Firefox, Internet Explorer ...) catturano
la pressione del tasto prima che questo possa essere letto dal Flash Player.
Questo significa che se premiamo la combinazione
di tasti ALT+F4 sotto Windows, il browser verrà chiuso prima che la nostra applicazione possa gestire la pressione dei suddetti
tasti.
Per costruire la nostra applicazione ci serviremo principalmente di due classi :
|
Il codice che segue servirà per creare un'applicazione con un campo di testo. Quest ultimo avrà lo scopo di mostrare i vari codici dei campi premuti dall'utente, e potrà inoltre essere spostato in 4 direzioni attraverso le frecce della tastiera.
HelloWorld.as
package
{
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFormatAlign;
import flash.display.MovieClip;
import flash.ui.Keyboard;
import flash.events.KeyboardEvent;
public class HelloWorld extends MovieClip
{
private var tasto:TextField;
private var format:TextFormat;
public function HelloWorld():void
{
// - Inizio configurazione campo di testo -
this.format = new TextFormat("Verdana", 10, 0x000000);
this.format.align = TextFormatAlign.CENTER;
this.tasto = new TextField();
this.tasto.width = 150;
this.tasto.height = 16;
this.tasto.border = true;
this.tasto.defaultTextFormat = this.format;
// - Fine configurazione campo di testo -
this.addChild(this.tasto);
stage.addEventListener(KeyboardEvent.KEY_DOWN, this.vediTasto);
}
private function vediTasto(evt:KeyboardEvent):void
{
this.tasto.text = evt.charCode.toString();
this.tasto.appendText(" - " + evt.keyCode.toString());
this.tasto.appendText(" - " + evt.keyLocation.toString());
switch (evt.keyCode)
{
case Keyboard.UP : this.tasto.y--; break;
case Keyboard.RIGHT : this.tasto.x++; break;
case Keyboard.LEFT : this.tasto.x--; break;
case Keyboard.DOWN : this.tasto.y++; break;
}
}
}
}Nell'esempio soprastante ho volutamente usato allo stesso tempo le seguenti tre proprietà :
- charCode - Contiene il codice del carattere del tasto premuto.
- keyCode - Indica il codice del tasto premuto.
- keyLocation - Contiene la posizione del tasto, utile per distinguere ad esempio il MAIUSC di sinistra da quello di destra.
Se avessi usato solo la proprietà charCode, non avrei potuto fare distinzione fra il tasto "1" in alto a sinistra e quello del tastierino numerico a destra, in quanto entrambi producono il codice di carattere 49.
Vi invito a fare delle prove per capire meglio il funzionamento, provando ad esempio a digitare il carattere "!" che nella tastiera italiana si trova nel tasto "1", poi il carattere "1" senza MAIUSC premuto e infine "1" del tastierino numerico.
Nota : Sia "1" che "!" hanno lo stesso keyCode (49) in quanto risiedono sullo stesso tasto, ma rilasciano un charCode differente producendo in effetti due caratteri diversi. |
- Linguaggi:
