02 - Animácia - premenné, random

Ak chceme zmenu, potrebujeme premennú

V predchádzajúcej lekcii sme programovali obrázky pomocou zabudovaných funkcií pre vykreslovanie 2D primitív -> síce o čosi zdĺhavejšie, než vo vašom preferovanom kresliacom programe - ale aspoň sa výsledok nehýbe ani nič navyše nerobí.

Tak sa to môže zdať zvonka na prvý pohľad.

Ale v skutočnosti hneď po inicializovaní aplikácie funkciou setup() sa následne 60x za sekundu prekreslí nanovo funkciou draw()- áno, presne ten istý obrázok.

...chcelo by to zmenu a na to tu máme premennú

Veľmi pekne je celá interaktivita a práca s myšou aj klávesnicou popísaná v kapitole interactivity -> https://p5js.org/learn/interactivity.html

Zabudované premenné

Knižnica p5.js nám poskytuje hneď niekoľko zabudovaných premenných - netreba ich inicializovať. Sú tam a dajú sa použiť hocikedy.

Napríklad mouseX a mouseY - ktoré obsahujú X a Y kordináty vášho kurzoru myši.

Skúsme to použiť:

function setup() {
  createCanvas(400, 400);
}

function draw() {
  background(220);
  ellipse(mouseX, mouseY, 50);
}

Na kurzore máme nalepený kruh. Hýbe sa to:

Čo sa stane, ak presunieme background(220); z funkcie draw() do funkcie setup() ?

Jednoduchý kresliaci program:

Skús použiť mouseX alebo mouseY aj pre definovanie farby kruhu

Teraz ak chceme zresetovať stav a začať "odznova" - musíme vypnúť/zapnúť sketch...

Event - mousePressed()

Event je špeciálna - trpezlivá - funkcia, ktorá nič nerobí a čaká na svoju chíľu - keď nastane definovaná udalosť.

Stále sme v prostredí JavaScriptu. Pre viac informácií o eventoch -> https://developer.mozilla.org/en-US/docs/Web/Events

Pre náš prípad ideme defunovať funkciu (áno, event je tiež funkcia), ktorá po kliknutí myšou zmaže všetko, čo bolo doposiaľ do canvasu nakreslené:

Link pre vyskúšanie: https://editor.p5js.org/igor-kamil/sketches/TeuSy28tH

Vlastné premenné

Syntax pre definovanie vlastnej premennej: let premenna

Život (globálnej) premennej by mal pozostávať z 3. krokov:

  1. deklarácia (na začiatku sketchu)

  2. inicializácia (pridelenie prvej hodnoty v setup())

  3. použitie v kóde

Úloha: animácia - nechať kruh vyletieť von z canvasu:

Random()

Jedna z možností, ako priniesť "zmenu" do aplikácie je použiť zabudovanú funkciu random()

Random v referenčnej príručke

Úloha: kreslenie kruhov na náhodnej pozícií s náhodnou farbou

V horespomínanom príklade používame ďaľšie zabudované funkcie: width, height, windowWidth a windowHeight

Takto definovaný sketch má vždy veľkosť obrazovky. Od teraz nemáme pod kontrolou, koľko pixlov budeme mať k dispozícií vopred - avšak taká je povaha webového prostredia, kde nevieme dopredu, či si váš sketch pozrie niekto na fullHD monitore alebo na smartphone.

AK si chceš pozrieť svoj sketch fullscreen: File -> Share -> Fullscreen

Napr. https://editor.p5js.org/igor-kamil/full/mPmeIX4EP

Úloha: symetrické kreslenie

Vytvor sketch, kde pomocou mouseX/mouseY a pmouseX/pmouseY vieš kresliť, ako v kresliacom programe. Zapoj random() pre farby. Uprav program, aby zrkadlovo krelil to isté:

Last updated