Return to Video

Special ProcessingJS functions

  • 0:01 - 0:02
    V tuto chvíli si asi uvědomujete,
  • 0:02 - 0:07
    že jste při animování pokaždé
    používali jednu a tu samou funkci.
  • 0:08 - 0:09
    Jedná se o funkci "draw".
  • 0:10 - 0:13
    Pojďme si ji připomenout
    na našem programu pro animaci auta.
  • 0:13 - 0:17
    Máme v něm proměnnou x
    s počáteční hodnotou 11.
  • 0:17 - 0:23
    Uvnitř funkce "draw" se pak
    u proměnné x nakreslí auto.
  • 0:23 - 0:27
    Poté program k proměnné x
    pokaždé přičte hodnotu 3.
  • 0:27 - 0:28
    Výsledkem toho je,
  • 0:28 - 0:32
    že se auto nepřetržitě posouvá
    po 3 pixelech přes celou obrazovku.
  • 0:33 - 0:35
    Takto to funguje.
  • 0:35 - 0:38
    Ale teď, když už umíte
    vytvořit své vlastní funkce,
  • 0:38 - 0:42
    možná budete chtít vědět
    o funkci "draw" něco víc.
  • 0:42 - 0:44
    Proč je vždy pojmenována "draw"?
  • 0:44 - 0:46
    Je to vlastní funkce?
  • 0:46 - 0:49
    Jsou to velmi dobré otázky.
  • 0:49 - 0:52
    V knihovně ProcessingJS uvidíte,
  • 0:52 - 0:56
    že funkce "draw" je jednou z
    několika předdefinovaných funkcí.
  • 0:56 - 1:01
    Tyto funkce dávají našim programům větší
    kontrolu nad tím, co se děje na plátně.
  • 1:01 - 1:03
    Předdefinovaná funkce je funkce,
  • 1:03 - 1:07
    která již byla definována
    knihovnou ProcessingJS.
  • 1:07 - 1:11
    Ale obvykle začíná
    jako prázdná definice.
  • 1:11 - 1:17
    Například v knihovně ProcessingJS
    existuje kód, který vypadá takto:
  • 1:17 - 1:19
    "var draw = function ()"
  • 1:19 - 1:23
    A pak je úplně prázdný,
    zcela prázdný.
  • 1:23 - 1:29
    Na Khan Academy načítáme knihovnu
    ProcessingJS do každého zdejšího programu.
  • 1:29 - 1:33
    Sice tento kód nikdy neuvidíte,
    ale věřte mi, existuje.
  • 1:34 - 1:40
    Tento kód teď zakomentuji,
    protože ProcessingJS ho již pro nás dělá.
  • 1:42 - 1:45
    A když ve vašem vlastním programu
    předefinujete "draw",
  • 1:45 - 1:50
    tak tato nová definice má přednost
    před starou prázdnou definicí.
  • 1:50 - 1:54
    Nyní funkce "draw" dělá
    velmi zajímavé věci.
  • 1:54 - 1:56
    Například kreslí auto.
  • 1:57 - 1:58
    Otázkou nyní je:
  • 1:58 - 2:02
    Proč je funkce "draw"
    přivolávána opakovaně?
  • 2:02 - 2:06
    V knihovně ProcessingJS
    je totiž také kód,
  • 2:06 - 2:11
    který nastavuje časovač prohlížeče a
    funkci přivolává opakovaně.
  • 2:11 - 2:14
    Znovu a znovu a znovu.
  • 2:15 - 2:18
    Musíme pojmenovat funkci "draw",
  • 2:18 - 2:22
    protože to je název funkce,
    kterou ProcessingJS volá opakovaně.
  • 2:23 - 2:28
    Co když funkci přejmenujeme
    například na "drawCar".
  • 2:28 - 2:33
    Nejprve dostaneme neurčitou chybu,
    měli bychom tedy napsat "var drawCar".
  • 2:35 - 2:36
    Takže teď vidíte,
  • 2:36 - 2:40
    že když přejmenujeme funkci na "drawCar",
    tak už nevidíme žádnou animaci.
  • 2:40 - 2:45
    A to proto, že tato funkce
    už není přivolávána opakovaně.
  • 2:45 - 2:47
    Jelikož již není
    pojmenována jako "draw".
  • 2:48 - 2:51
    Musíme tedy kód,
    který chceme volat opakovaně,
  • 2:51 - 2:56
    vložit dovnitř funkce
    pojmenované přesně "draw".
  • 2:56 - 3:01
    Takže to udělám znovu,
    a odtud přivolám "drawCar".
  • 3:01 - 3:04
    Tak a máme to zpět.
  • 3:05 - 3:08
    Čili funkce musí být
    pojmenována "draw".
  • 3:09 - 3:13
    To také znamená, že byste neměli
    pojmenovávat své vlastní funkce "draw".
  • 3:13 - 3:18
    Pokud tedy nechcete, aby byly použity
    speciálně a přivolávány znovu a znovu.
  • 3:18 - 3:24
    Také si pamatujte, že nemůžete mít
    více funkcí s názvem "draw".
  • 3:24 - 3:28
    Počítá se pouze poslední definice.
  • 3:28 - 3:32
    Dejme tomu, že bychom
    tady uvnitř měli "rect".
  • 3:32 - 3:36
    Teď můžeme vidět,
    že se naše auto už nekreslí.
  • 3:36 - 3:41
    Místo toho se kreslí pouze obdélník,
    protože se počítá pouze poslední definice.
  • 3:41 - 3:43
    Pojďme to teď smazat.
  • 3:45 - 3:48
    Funkce draw není jedinou
    předdefinovanou funkcí,
  • 3:48 - 3:50
    která funguje jinak.
  • 3:50 - 3:56
    Existuje spousta funkcí
    pro reakci na myš a na stisknutí kláves.
  • 3:57 - 4:02
    Dejme tomu, že chceme program,
    který nakreslí barevnou elipsu.
  • 4:02 - 4:04
    A to kdykoli, když
    uživatel pohne myší.
  • 4:05 - 4:09
    Toho bychom mohli docílit s
    následující funkcí.
  • 4:09 - 4:20
    Napíšeme fill, mouseX, mouseY, mouseY
    a ellipse mouseX, mouseY, 10 a 10.
  • 4:20 - 4:23
    Dobře, oh, krásné.
  • 4:23 - 4:27
    Tato funkce je volána
    znovu a znovu.
  • 4:28 - 4:30
    A to i když uživatel
    nepohybuje myší.
  • 4:30 - 4:31
    Jako právě teď.
  • 4:32 - 4:35
    A tento program funguje,
    dělá totiž přesně to, co chceme.
  • 4:35 - 4:39
    Maluje tyto pěkné elipsy
    po celé obrazovce.
  • 4:39 - 4:40
    Ale jak se ukazuje,
  • 4:40 - 4:45
    existuje lepší a efektivnější způsob,
    jak docílit toho samého.
  • 4:45 - 4:50
    Můžeme tedy změnit funkci "draw"
    na "mouseMoved".
  • 4:52 - 4:54
    A stále to funguje.
  • 4:55 - 4:59
    Naše prostředí kontroluje programy,
    aby následně zjistilo,
  • 4:59 - 5:01
    zda jsme definovali
    funkci "mouseMoved".
  • 5:01 - 5:05
    A pokud ano, volá tuto funkci
    kdykoli uživatel pohne myší.
  • 5:05 - 5:10
    Ale nebude se volat,
    pokud uživatel nepohybuje myší.
  • 5:10 - 5:13
    Předtím jsme přivolali
    kód ve funkci "draw".
  • 5:13 - 5:16
    A to i když jsme to nepotřebovali,
    znovu a znovu.
  • 5:16 - 5:20
    A teď voláme tento kód
    jen ve funkci "mouseMoved".
  • 5:20 - 5:23
    Pouze tehdy, když se hodnoty mouseX
    nebo mouseY opravdu změní.
  • 5:23 - 5:28
    Náš program je tedy efektivnější,
    a to je dobrá věc.
  • 5:28 - 5:31
    Obecně platí, že pokud chcete
    změnit pouze výstup programu,
  • 5:31 - 5:33
    a to když uživatel
    pohne myší,
  • 5:33 - 5:37
    pak je lepší mít kód
    uvnitř funkce "mouseMoved".
  • 5:38 - 5:41
    A je tu spousta dalších
    takto předdefinovaných funkcí.
  • 5:41 - 5:45
    V dokumentaci můžete
    vidět další příklady.
  • 5:45 - 5:49
    Jako "mousePressed", "mouseReleased",
    "keyPressed" a další.
  • 5:50 - 5:55
    Takže nezapomeňte, pokud chcete použít
    speciální předdefinované funkce,
  • 5:55 - 5:59
    jako "mouseMoved" nebo "draw",
    napište je přesně a použijte je přesně.
  • 5:59 - 6:01
    Pokud tak neučiníte,
  • 6:01 - 6:06
    pak se ujistěte, že své vlastní funkci
    dáte nové a jedinečné jméno.
Title:
Special ProcessingJS functions
Description:

more » « less
Video Language:
English
Duration:
06:08

Czech subtitles

Incomplete

Revisions