Sari la conținut
EduCamp
Alice 3AvansatAlice 3 de la zero · partea 8

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.

50 minuteNivel: AvansatEduCamp

Nume și prenume: ................................................    Clasa: .................    Data: .......................

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.

this addObjectMoverFor this.alien

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ă:

addArrowKeyPressListener
if event isKey UP is true then
this.alien move FORWARD, 0.5, duration: 0.25
if event isKey DOWN is true then
this.alien move BACKWARD, 0.5, duration: 0.25
if event isKey LEFT is true then
this.alien turn LEFT, 0.125, duration: 0.25
if event isKey RIGHT is true then
this.alien turn RIGHT, 0.125, duration: 0.25

3. Celelalte taste

addKeyPressListener răspunde la orice tastă. Tasta spațiu face personajul să sară:

addKeyPressListener
if event isKey SPACE is true then
this.alien move UP, 1.0, duration: 0.3
this.alien move DOWN, 1.0, duration: 0.3

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:

addMouseClickOnObjectListener
if event getModelAtMouseLocation == this.alien is true then
this.alien say "Ai dat clic pe mine!"

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
addKeyPressListener
if event isKey S is true then
this.alien saluta 2
🔑 Rezolvare
addMouseClickOnObjectListener
if event getModelAtMouseLocation == this.pineTree is true then
this.pineTree resize 2.0
this.alien say "Ce copac mare!"

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.
Autor: EduCampActualizat: 4 octombrie 2026