10 - Udalosti

Už poznáme niekoľko špeciálnych systémových podprogramov a systémových premenných:

  • podprogram setup sa vykoná automaticky po spustení

  • podprogram draw sa vykonáva dokola automaticky

  • premenné width a height obsahujú rozmery okna

  • premenné mouseX a mouseY obsahujú aktuálnu polohu myši

  • premenné pmouseX a pmouseY obsahujú polohy myši v predošlom kole draw.

Ukážeme si ďalšie špeciálne podprogramy. Tie budú reagovať na nejaké udalosti v interakcii, ako napríklad stlačenie myši.

Podprogram, ktorý reaguje na nejakú udalosť (napríklad stlačenie myši) sa nazýva aj event handler, lebo spracúva udalosť - handluje event.

Úloha 1

Vytvorte skeč, ktorý na bielom pozadí kreslí krúžky náhodnej farby na pozíciu myši:

Úloha 2

Váš program vyzerá asi nejak takto:

void setup()
{
  size(400,400);
  background(255);
  noStroke();
}

void draw()
{
  fill(random(256),random(256),random(256), 50);
  circle(mouseX, mouseY, 50);
}

Doplňte teraz do programu nový podprogram, ktorý sa bude volať mousePressed: a premiestnite vykresľovanie krúžku z draw do neho:

void setup()
{
  size(400,400);
  background(255);
  noStroke();
}

void mousePressed()
{
  fill(random(256),random(256),random(256), 50);
  circle(mouseX, mouseY, 50);  
}

void draw()
{

}

Sledujte čo sa stalo s vaším programom a klikajte myšou do okna.

Event s názvom mousePressed sa vykonáva automaticky, keď stlačíme myš v okne.

Úloha 3

Vytvorte nový skeč, ktorý pri stlačení myši zmení farbu pozadia na náhodnú.

Úloha 4

Vytvorte nový skeč, ktorý pri pohybe myšou kreslí čiaru a pri stlačení myši vymaže obrazovku.

Ak si nepamätáte, pozrite si predošlú lekciu, ako sme tam kreslili súvislú čiaru myšou.

Úloha 5

Rovnako ako mousePressedfunguje podprogram keyPressed, ktorý reaguje na udalosť stlačenia klávesy (hocijakej).

Upravte predošlý skeč tak, aby pri stlačení klávesy zmenil farbu čiary na náhodnú.

Úloha 6

Ak vás, podobne ako mňa, rozčuľuje, že čiara sa kreslí súvisle a musím všetko kresliť jedným ťahom, tak si ukážeme ďalší event handler, konkrétne mouseDragged. Ten sa vykonáva vtedy, keď hýbeme myšou so stlačeným tlačidlom. Teda keď ťaháme myš.

Upravte predošlý skeč tak, že vytvoríte podprogram mouseDragged a do neho presuniete z podprogramu draw príkaz na kreslenie čiary, aby sa čiara nekreslila neustále, ale len keď máme stlačenú myš:

Čiara sa kreslí len keď je stlačená myš.

Úloha 7

Skúste nakresliť tvár: Hlavu, oči, nos, ústa. Čo sa deje?

Pri každom novom stlačení myši sa obrazovka premaže. Prečo? No lebo sme to tak povedali. Máme v skeči podprogram mousePressed a v ňom sa obrazovka premazáva.

Udalosti môžu nastávajú aj viaceré naraz. Ak chceme ťahať myš, musíme ju najprv stlačiť. Preto na začiatku udalosti mouseDragged nastane aj udalosť mousePressed.

Premenujte podprogram mousePressed na mouseClicked.

Udalosť mouseClicked nastane, keď je myš stlačená a potom pustená na to istom mieste.

Úloha 8

Poznáme ešte aj event mouseReleased, ktorý sa vykoná, keď je myš pustená. Upravte predošlý skeč tak, aby sa pri pustení myši vygenerovala nová náhodná farba čiary. Tým pádom bude každá čiara automaticky inej farby:

Úloha 9

Podobne ako mousePressed a mouseReleased fungujú aj eventy keyPressed a keyReleased. Len namiesto myši sledujú klávesnicu.

Vytvorte nový skeč, ktorý má čierne pozadie. Pri stlačení klávesy vykreslí do stredu obrazovky biely kruh. Pri pustení klávesy ho zmaže.

Last updated