[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.68,0:00:04.64,Default,,0000,0000,0000,,Może już wiecie, że trzeba\Nzdefiniować pewną funkcję Dialogue: 0,0:00:04.74,0:00:09.63,Default,,0000,0000,0000,,gdy chcemy mieć w programie\Nanimację. To "draw" (rysuj). Dialogue: 0,0:00:09.73,0:00:13.73,Default,,0000,0000,0000,,Dla przypomnienia\N- program z animowanym autem. Dialogue: 0,0:00:13.83,0:00:17.19,Default,,0000,0000,0000,,Ma zmienną „x” i zaczyna się od 11. Dialogue: 0,0:00:17.29,0:00:21.01,Default,,0000,0000,0000,,Funkcja "draw" rysuje auto Dialogue: 0,0:00:21.11,0:00:22.90,Default,,0000,0000,0000,,w punkcie zmiennej Dialogue: 0,0:00:23.00,0:00:27.04,Default,,0000,0000,0000,,i za każdym razem do "x" dodaje 3. Dialogue: 0,0:00:27.14,0:00:32.81,Default,,0000,0000,0000,,Samochodzik stale przesuwa się\Npo monitorze, zawsze o 3 piksele. Dialogue: 0,0:00:32.91,0:00:35.28,Default,,0000,0000,0000,,Tak to działa. Dialogue: 0,0:00:35.38,0:00:37.86,Default,,0000,0000,0000,,Umiecie już pisać własne funkcje, Dialogue: 0,0:00:37.96,0:00:41.89,Default,,0000,0000,0000,,może więc zastanawiacie się\Nnad "draw". Dialogue: 0,0:00:41.99,0:00:44.11,Default,,0000,0000,0000,,Dlaczego zawsze tak się nazywa? Dialogue: 0,0:00:44.21,0:00:46.42,Default,,0000,0000,0000,,Czy to funkcja niestandardowa? Dialogue: 0,0:00:46.52,0:00:48.26,Default,,0000,0000,0000,,Bardzo trafne pytania! Dialogue: 0,0:00:49.35,0:00:51.99,Default,,0000,0000,0000,,W bibliotece Processing JS Dialogue: 0,0:00:52.09,0:00:56.10,Default,,0000,0000,0000,,„draw” jest jedną z nielicznych\Npredefiniowanych funkcji, Dialogue: 0,0:00:56.20,0:01:00.63,Default,,0000,0000,0000,,które dają programom\Nwiększą kontrolę nad obrazem. Dialogue: 0,0:01:01.30,0:01:04.100,Default,,0000,0000,0000,,Funkcja predefiniowana to taka,\Nktóra została określona Dialogue: 0,0:01:05.10,0:01:07.44,Default,,0000,0000,0000,,przez bibliotekę Processing JS. Dialogue: 0,0:01:07.54,0:01:11.19,Default,,0000,0000,0000,,Zwykle zaczyna się\Njako pusta definicja. Dialogue: 0,0:01:11.29,0:01:14.74,Default,,0000,0000,0000,,Np. w bibliotece Processing JS Dialogue: 0,0:01:14.84,0:01:19.33,Default,,0000,0000,0000,,znajdziemy coś takiego:\N`var draw = function() { }` Dialogue: 0,0:01:19.43,0:01:22.51,Default,,0000,0000,0000,,a dalej jest pusto. Zupełnie! Dialogue: 0,0:01:23.61,0:01:26.36,Default,,0000,0000,0000,,Ładujemy bibliotekę ProcessingJS Dialogue: 0,0:01:26.46,0:01:28.90,Default,,0000,0000,0000,,do każdego programu w Khan Academy, Dialogue: 0,0:01:29.00,0:01:34.06,Default,,0000,0000,0000,,więc tej linii nie widzicie nigdy,\Nale wierzcie mi, ona istnieje. Dialogue: 0,0:01:34.16,0:01:35.100,Default,,0000,0000,0000,,Wyrzucę tę linię, Dialogue: 0,0:01:37.04,0:01:40.16,Default,,0000,0000,0000,,skoro Processing JS nas wyręcza. Dialogue: 0,0:01:41.62,0:01:44.19,Default,,0000,0000,0000,,Gdy ponownie zdefiniujecie „draw” Dialogue: 0,0:01:44.29,0:01:50.08,Default,,0000,0000,0000,,we własnym programie,\Nnowa definicja anuluje starą, pustą. Dialogue: 0,0:01:50.18,0:01:53.64,Default,,0000,0000,0000,,Teraz funkcja "draw"\Nrobi świetne rzeczy, Dialogue: 0,0:01:53.74,0:01:55.14,Default,,0000,0000,0000,,np. rysuje auto. Dialogue: 0,0:01:56.100,0:02:01.64,Default,,0000,0000,0000,,Pytanie: dlaczego ta funkcja\Njest przywoływana raz po raz? Dialogue: 0,0:02:01.74,0:02:06.32,Default,,0000,0000,0000,,W bibliotece ProcessingJS\Njest też program, Dialogue: 0,0:02:06.42,0:02:09.41,Default,,0000,0000,0000,,który ustawia zegar przeglądarki Dialogue: 0,0:02:09.51,0:02:13.79,Default,,0000,0000,0000,,i stale przywołuje funkcję "draw". Dialogue: 0,0:02:15.36,0:02:17.71,Default,,0000,0000,0000,,Funkcję musimy nazwać "draw", Dialogue: 0,0:02:17.81,0:02:21.83,Default,,0000,0000,0000,,bo taka jest nazwa,\Nktórą przywołuje ProcessingJS. Dialogue: 0,0:02:22.86,0:02:26.90,Default,,0000,0000,0000,,Jeśli zmienimy nazwę,\Nnp. na "drawCar", Dialogue: 0,0:02:27.89,0:02:30.49,Default,,0000,0000,0000,,widzimy: "niezdefiniowany błąd". Dialogue: 0,0:02:30.59,0:02:33.14,Default,,0000,0000,0000,,Napiszmy więc "var drawCar". Dialogue: 0,0:02:34.67,0:02:39.82,Default,,0000,0000,0000,,Jak widzicie, jeśli zmienimy nazwę\Nna "drawCar", animacji nie będzie. Dialogue: 0,0:02:39.92,0:02:44.60,Default,,0000,0000,0000,,To dlatego, że funkcja\Nnie jest już stale przywoływana. Dialogue: 0,0:02:44.70,0:02:46.64,Default,,0000,0000,0000,,Bo nie nazywa się "draw". Dialogue: 0,0:02:47.74,0:02:50.04,Default,,0000,0000,0000,,Musimy wprowadzić program, Dialogue: 0,0:02:50.14,0:02:55.12,Default,,0000,0000,0000,,który ma być stale przywoływany\Nwewnątrz funkcji o nazwie "draw". Dialogue: 0,0:02:55.22,0:02:57.42,Default,,0000,0000,0000,,Zrobię to jeszcze raz Dialogue: 0,0:02:57.52,0:03:00.74,Default,,0000,0000,0000,,i przywołam "drawCar" tutaj. Dialogue: 0,0:03:00.84,0:03:02.83,Default,,0000,0000,0000,,Aha! Znowu działa. Dialogue: 0,0:03:03.86,0:03:05.15,Default,,0000,0000,0000,,No dobrze. Dialogue: 0,0:03:05.25,0:03:07.23,Default,,0000,0000,0000,,Musi być nazwa "draw". Dialogue: 0,0:03:07.92,0:03:10.18,Default,,0000,0000,0000,,Dlatego też nie powinniście nadawać Dialogue: 0,0:03:10.28,0:03:13.05,Default,,0000,0000,0000,,niestandardowym funkcjom nazwy "draw", Dialogue: 0,0:03:13.15,0:03:17.63,Default,,0000,0000,0000,,chyba że chcecie, by były\Nprzywoływane raz po raz. Dialogue: 0,0:03:18.52,0:03:20.03,Default,,0000,0000,0000,,I pamiętajcie, Dialogue: 0,0:03:20.13,0:03:23.96,Default,,0000,0000,0000,,nie możecie nadać\Nnazwy "draw" kilku funkcjom. Dialogue: 0,0:03:24.06,0:03:28.14,Default,,0000,0000,0000,,Będzie się liczyć\Ntylko ostatnia definicja. Dialogue: 0,0:03:28.24,0:03:30.77,Default,,0000,0000,0000,,Jeśli damy tu "rect", Dialogue: 0,0:03:31.66,0:03:35.59,Default,,0000,0000,0000,,samochodzik już się nie pojawi. Dialogue: 0,0:03:35.69,0:03:40.87,Default,,0000,0000,0000,,Rysowany jest tylko prostokąt,\Nbo liczy się ostatnia definicja. Dialogue: 0,0:03:40.97,0:03:42.36,Default,,0000,0000,0000,,Skasujmy to więc. Dialogue: 0,0:03:44.79,0:03:48.76,Default,,0000,0000,0000,,"Draw" nie jest jedyną\Npredefiniowaną funkcją Dialogue: 0,0:03:48.86,0:03:50.72,Default,,0000,0000,0000,,zachowującą się wyjątkowo. Dialogue: 0,0:03:50.82,0:03:52.45,Default,,0000,0000,0000,,Jest też grupa funkcji Dialogue: 0,0:03:52.55,0:03:57.33,Default,,0000,0000,0000,,obsługujących reakcję myszy\Ni wciskanie klawiszy na klawiaturze. Dialogue: 0,0:03:57.43,0:04:01.62,Default,,0000,0000,0000,,Powiedzmy, że program\Nma narysować kolorową elipsę, Dialogue: 0,0:04:01.72,0:04:04.72,Default,,0000,0000,0000,,gdy tylko użytkownik\Nporuszy myszką. Dialogue: 0,0:04:04.82,0:04:08.96,Default,,0000,0000,0000,,Załatwimy sprawę\Nwłaśnie taką funkcją. Dialogue: 0,0:04:09.06,0:04:12.39,Default,,0000,0000,0000,,"MouseX", "mouseY", Dialogue: 0,0:04:12.49,0:04:14.92,Default,,0000,0000,0000,,a potem "ellipse". Dialogue: 0,0:04:15.02,0:04:18.16,Default,,0000,0000,0000,,"MouseX", "mouseY"... Dialogue: 0,0:04:19.53,0:04:22.11,Default,,0000,0000,0000,,No dobrze. Pięknie! Dialogue: 0,0:04:23.08,0:04:27.64,Default,,0000,0000,0000,,Ta funkcja jest przywoływana\Nraz po raz, Dialogue: 0,0:04:27.74,0:04:31.70,Default,,0000,0000,0000,,nawet gdy użytkownik\Nnie porusza myszką, jak w tej chwili. Dialogue: 0,0:04:31.80,0:04:34.83,Default,,0000,0000,0000,,Program działa, robi to, czego żądamy, Dialogue: 0,0:04:34.93,0:04:38.18,Default,,0000,0000,0000,,czyli maluje ładne elipsy\Nna całym monitorze. Dialogue: 0,0:04:38.28,0:04:43.44,Default,,0000,0000,0000,,Ale okazuje się, że jest\Nlepszy, wydajniejszy sposób. Dialogue: 0,0:04:44.80,0:04:49.97,Default,,0000,0000,0000,,Możemy zamienić funkcję "draw"\Nna "mouseMoved" Dialogue: 0,0:04:51.06,0:04:53.50,Default,,0000,0000,0000,,i zobaczmy... Wciąż działa! Dialogue: 0,0:04:55.44,0:04:59.25,Default,,0000,0000,0000,,Nasze środowisko sprawdza,\Nczy w programach zdefiniowano Dialogue: 0,0:04:59.35,0:05:01.70,Default,,0000,0000,0000,,funkcję "mouseMoved", a jeśli tak, Dialogue: 0,0:05:01.80,0:05:05.78,Default,,0000,0000,0000,,to przywołuje ją,\Ngdy użytkownik porusza myszką. Dialogue: 0,0:05:05.88,0:05:10.46,Default,,0000,0000,0000,,Ale funkcja nie zostanie przywołana,\Ngdy użytkownik myszką nie rusza. Dialogue: 0,0:05:10.56,0:05:15.80,Default,,0000,0000,0000,,Wcześniej przywoływaliśmy raz po raz\Nprogram w "draw", choć bez potrzeby. Dialogue: 0,0:05:15.90,0:05:18.33,Default,,0000,0000,0000,,Teraz przywołujemy go Dialogue: 0,0:05:19.04,0:05:23.46,Default,,0000,0000,0000,,w "mouseMoved" tylko gdy "mouseX"\Nlub "mouseY" naprawdę się zmieniło. Dialogue: 0,0:05:23.56,0:05:27.04,Default,,0000,0000,0000,,Program stał się\Nwydajniejszy, a to dobrze. Dialogue: 0,0:05:28.04,0:05:33.10,Default,,0000,0000,0000,,Jeśli chcecie zmienić efekt działania\Nprogramu, gdy użytkownik rusza myszką, Dialogue: 0,0:05:33.20,0:05:37.24,Default,,0000,0000,0000,,to lepiej jest mieć ten program\Nw funkcji "mouseMoved". Dialogue: 0,0:05:38.31,0:05:41.19,Default,,0000,0000,0000,,Jest więcej\Npredefiniowanych funkcji; Dialogue: 0,0:05:41.29,0:05:44.68,Default,,0000,0000,0000,,przykłady znajdziecie\Nw dokumentacji: Dialogue: 0,0:05:44.78,0:05:48.90,Default,,0000,0000,0000,,"mousePressed",\N"mouseReleased", "keyPressed" itd. Dialogue: 0,0:05:50.30,0:05:54.48,Default,,0000,0000,0000,,Pamiętajcie: chcąc użyć\Nspecjalnej predefiniowanej funkcji, Dialogue: 0,0:05:54.58,0:05:56.57,Default,,0000,0000,0000,,jak "mouseMoved" lub "draw", Dialogue: 0,0:05:56.67,0:05:58.90,Default,,0000,0000,0000,,poprawnie zapiszcie jej nazwę. Dialogue: 0,0:05:59.60,0:06:05.48,Default,,0000,0000,0000,,Albo nadawajcie własnym funkcjom\Nnowe, niepowtarzalne nazwy.