Evenimente: tastatura și mouse-ul
Programul răspunde la taste și la clicuri: personajul se mișcă cu săgețile, sare la tasta spațiu și vorbește când se dă clic pe el.
Ai nevoie de:
- Un proiect cu personajul Alien
1. Ce este un eveniment
Un eveniment este o întâmplare la care programul răspunde: apăsarea unei taste, un clic pe un obiect, pornirea scenei. Pentru fiecare eveniment se scrie un ascultător (event listener): instrucțiunile care se execută când are loc evenimentul.
Ascultătorii se scriu în fila initializeEventListeners a editorului de cod. Fila conține deja
ascultătorul pornirii scenei, addSceneActivationListener, care execută myFirstMethod.
Un ascultător nou se adaugă cu butonul Add Event Listener, care are grupurile:
- Scene Activation / Time: pornirea scenei și evenimentele de timp;
- Keyboard: tastele;
- Mouse: clicurile;
- Position / Orientation: atingerile și apropierea dintre obiecte.
2. Mișcarea cu săgețile
Cel mai scurt mod este addObjectMoverFor, din grupul Keyboard: săgețile deplasează și rotesc
obiectul ales, fără alte instrucțiuni.
Pentru o mișcare stabilită de programator, se folosește addArrowKeyPressListener. În interiorul
lui, funcția event isKey arată ce săgeată a fost apăsată:
3. Celelalte taste
addKeyPressListener răspunde la orice tastă. Tasta spațiu face personajul să sară:
4. Clicul pe un obiect
addMouseClickOnObjectListener răspunde la clic pe un obiect din scenă. Funcția
event getModelAtMouseLocation dă obiectul pe care s-a dat clic:
5. Animația și tastele în același timp
myFirstMethod rulează animația, iar ascultătorii răspund la taste în același timp cu ea. Astfel, un proiect poate avea o parte care se desfășoară singură și o parte pe care o controlează cel care îl privește.
Exerciții
🔑 Rezolvare
🔑 Rezolvare
Ce ai învățat
La finalul fișei, poți:
- să explici ce este un eveniment și un ascultător de evenimente;
- să adaugi ascultători în fila initializeEventListeners;
- să controlezi un personaj cu săgețile și cu alte taste;
- să răspunzi la clicul pe un obiect;
- să oprești adunarea apăsărilor repetate cu multipleEventPolicy.