10 - Udalosti
Last updated
Last updated
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.
Vytvorte skeč, ktorý na bielom pozadí kreslí krúžky náhodnej farby na pozíciu myši:
Váš program vyzerá asi nejak takto:
Doplňte teraz do programu nový podprogram, ktorý sa bude volať mousePressed
: a premiestnite vykresľovanie krúžku z draw
do neho:
Sledujte čo sa stalo s vaším programom a klikajte myšou do okna.
Vytvorte nový skeč, ktorý pri stlačení myši zmení farbu pozadia na náhodnú.
Vytvorte nový skeč, ktorý pri pohybe myšou kreslí čiaru a pri stlačení myši vymaže obrazovku.
Upravte predošlý skeč tak, aby pri stlačení klávesy zmenil farbu čiary na náhodnú.
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š:
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
.
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:
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.