Evenimentele pentru Tastatura (cand e apasat un buton de la tastatura) sunt detectate cu obiectul KeyboardEvent. Acesta are doua tipuri:
KEY_DOWN - declanseaza evenimentul cand butonul e apasat.
KEY_UP - declanseaza evenimentul cand apasarea butonului este eliberata.
KeyboardEvent are 6 proprietati:
charCode - contine un numar ce reprezinta valoarea de cod a caracterului de la butonul apasat sau eliberat.
- De exemplu: pentru 'a' valoarea de cod e 97, pt. 'A' e 65, pt. '3' este 51, iar pentru 'Shift+3' (adica '#') este 35.
keyCode - contine un numar cu valoarea codului butonului apasat. Diferenta fata de "charCode" e aceea ca "charCode" returneaza valoarea 0 pt. tastele care nu reprezinta un caracter (Shift, Ctrl, sagetile, ...), dar "keyCode" contine un numar specific si pentru aceste taste.
- De exemplu: pt. 'Shift' returneaza numarul 16, pt. 'sageata-dreapta' numarul 31.
keyLocation - contine un numar ce indica locatia butonului apasat. Folosit pt. taste care apar mai mult de o data pe tastatura, cum sunt Shift, Alt.
altKey - true daca tasta 'Alt' e activa, sau false daca e inactiva
ctrlKey - true daca tasta 'Ctrl' e activa, sau false daca e inactiva.
shiftKey - true daca 'Shift' e activ, sau false daca e inactiv.
- De retinut ca valorile codurilor pt. "charCode" si "keyCode" difera in functie de sistemul de operare al calculatorului. Exemplele de aici sunt pentru Windows.
- Ca sa fie detectat butonul apasat in prezentarea Flash, se aplica metoda addEventListener() (cu KeyboardEvent) la Scena (obiectul stage).
Iata un exemplu cu "KeyboardEvent" si KEY_DOWN in care e folosita proprietatea "keyCode", prin care va fi miscat un dreptunghi cu sagetile de la tastatura; iar proprietatea "shiftKey" va fi utilizata pt. a modifica viteza de miscare.
1. Deschideti un document Flash nou, ActionScript 3.0 2. Desenati un dreptungi si transformati-l in Movie Clip (de la meniul Modify -> Convert to Symbol, iar la Type alegeti Movie Clip si apasati OK), apoi, in panoul Properties, in partea de sus, unde e scris "<Instance Name>" scrieti numele dreptunghi (necesar in codul ActionScript). 3. Click-dreapta pe Cadru 1 in Timeline si alegeti Action, iar in panoul care se deschide pt. ActionScript adaugati urmatorul cod:
// Inregistrare eveniment pt. detectare apasare buton de la tastatura
// Detectarea se aplica obiectului 'stage' pt. a fi activ in toata prezentarea
stage.addEventListener(KeyboardEvent.KEY_DOWN, moveF);
// Functia apelata la apasarea tastei
function moveF(key_evt:KeyboardEvent):void
{
// Setare variabila pt. viteza de miscare, in functie de "shiftKey"
var vi:int = key_evt.shiftKey ? 12 : 2;
// Instructiune "switch" cu valori si comenzi pt. tastele sageti
// Codurile pt. sagetile: Stanga, Dreapta, Jos, Sus
switch (key_evt.keyCode)
{
case 37:
dreptunghi.x -= vi;
break;
case 39:
dreptunghi.x += vi;
break;
case 38:
dreptunghi.y -= vi;
break;
case 40:
dreptunghi.y += vi;
break;
default:
break;
}
}
4. Apasati Ctrl+Enter ca sa testati rezultatul. Va apare urmatoarea prezentare Flash:.
- Cand apasati sagetile de la tastatura, dreptunghiul se va misca in directia data de fiecare sageata (intai sa dati click pe prezentare).
- Daca tineti apasata tasta Shift, viteza de miscare va fi mai mare.
- Expresia "var vi:int = key_evt.shiftKey ? 12 : 2;" defineste valoarea 12 daca "key_evt.shiftKey" e TRUE (cand Shift e apasat) sau 2 daca e FALSE (Shift neapasat).
- Comenzile din instructiunea "switch" modifica valoarea 'x' si 'y' pt. instanta "dreptunghi" (distanta X si Y), cu valoarea variabilei "vi", in functie de sageata apasata de la tastatura.
Ca sa aflati codul pt. fiecare tasta, puteti folosi urmatorul script AS3: stage.addEventListener(KeyboardEvent.KEY_DOWN, keyC);
function keyC(key:KeyboardEvent):void { trace(key.keyCode); }
- Afiseaza in panoul Output codul tastei apasate.
- Fisierul FLA cu acest exemplu poate fi descarcat de la: Evenimente Tastatura.