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 automatickypremenné
width
aheight
obsahujú rozmery oknapremenné
mouseX
amouseY
obsahujú aktuálnu polohu myšipremenné
pmouseX
apmouseY
obsahujú polohy myši v predošlom koledraw
.
Ukážeme si ďalšie špeciálne podprogramy. Tie budú reagovať na nejaké udalosti v interakcii, ako napríklad stlačenie myši.
Ú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.
Ú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.

Úloha 5
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š:

Ú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.
Premenujte podprogram mousePressed
na mouseClicked
.

Ú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