Special ProcessingJS functions
-
0:01 - 0:05Może już wiecie, że trzeba
zdefiniować pewną funkcję -
0:05 - 0:10gdy chcemy mieć w programie
animację. To "draw" (rysuj). -
0:10 - 0:14Dla przypomnienia
- program z animowanym autem. -
0:14 - 0:17Ma zmienną „x” i zaczyna się od 11.
-
0:17 - 0:21Funkcja "draw" rysuje auto
-
0:21 - 0:23w punkcie zmiennej
-
0:23 - 0:27i za każdym razem do "x" dodaje 3.
-
0:27 - 0:33Samochodzik stale przesuwa się
po monitorze, zawsze o 3 piksele. -
0:33 - 0:35Tak to działa.
-
0:35 - 0:38Umiecie już pisać własne funkcje,
-
0:38 - 0:42może więc zastanawiacie się
nad "draw". -
0:42 - 0:44Dlaczego zawsze tak się nazywa?
-
0:44 - 0:46Czy to funkcja niestandardowa?
-
0:47 - 0:48Bardzo trafne pytania!
-
0:49 - 0:52W bibliotece Processing JS
-
0:52 - 0:56„draw” jest jedną z nielicznych
predefiniowanych funkcji, -
0:56 - 1:01które dają programom
większą kontrolę nad obrazem. -
1:01 - 1:05Funkcja predefiniowana to taka,
która została określona -
1:05 - 1:07przez bibliotekę Processing JS.
-
1:08 - 1:11Zwykle zaczyna się
jako pusta definicja. -
1:11 - 1:15Np. w bibliotece Processing JS
-
1:15 - 1:19znajdziemy coś takiego:
`var draw = function() { }` -
1:19 - 1:23a dalej jest pusto. Zupełnie!
-
1:24 - 1:26Ładujemy bibliotekę ProcessingJS
-
1:26 - 1:29do każdego programu w Khan Academy,
-
1:29 - 1:34więc tej linii nie widzicie nigdy,
ale wierzcie mi, ona istnieje. -
1:34 - 1:36Wyrzucę tę linię,
-
1:37 - 1:40skoro Processing JS nas wyręcza.
-
1:42 - 1:44Gdy ponownie zdefiniujecie „draw”
-
1:44 - 1:50we własnym programie,
nowa definicja anuluje starą, pustą. -
1:50 - 1:54Teraz funkcja "draw"
robi świetne rzeczy, -
1:54 - 1:55np. rysuje auto.
-
1:57 - 2:02Pytanie: dlaczego ta funkcja
jest przywoływana raz po raz? -
2:02 - 2:06W bibliotece ProcessingJS
jest też program, -
2:06 - 2:09który ustawia zegar przeglądarki
-
2:10 - 2:14i stale przywołuje funkcję "draw".
-
2:15 - 2:18Funkcję musimy nazwać "draw",
-
2:18 - 2:22bo taka jest nazwa,
którą przywołuje ProcessingJS. -
2:23 - 2:27Jeśli zmienimy nazwę,
np. na "drawCar", -
2:28 - 2:30widzimy: "niezdefiniowany błąd".
-
2:31 - 2:33Napiszmy więc "var drawCar".
-
2:35 - 2:40Jak widzicie, jeśli zmienimy nazwę
na "drawCar", animacji nie będzie. -
2:40 - 2:45To dlatego, że funkcja
nie jest już stale przywoływana. -
2:45 - 2:47Bo nie nazywa się "draw".
-
2:48 - 2:50Musimy wprowadzić program,
-
2:50 - 2:55który ma być stale przywoływany
wewnątrz funkcji o nazwie "draw". -
2:55 - 2:57Zrobię to jeszcze raz
-
2:58 - 3:01i przywołam "drawCar" tutaj.
-
3:01 - 3:03Aha! Znowu działa.
-
3:04 - 3:05No dobrze.
-
3:05 - 3:07Musi być nazwa "draw".
-
3:08 - 3:10Dlatego też nie powinniście nadawać
-
3:10 - 3:13niestandardowym funkcjom nazwy "draw",
-
3:13 - 3:18chyba że chcecie, by były
przywoływane raz po raz. -
3:19 - 3:20I pamiętajcie,
-
3:20 - 3:24nie możecie nadać
nazwy "draw" kilku funkcjom. -
3:24 - 3:28Będzie się liczyć
tylko ostatnia definicja. -
3:28 - 3:31Jeśli damy tu "rect",
-
3:32 - 3:36samochodzik już się nie pojawi.
-
3:36 - 3:41Rysowany jest tylko prostokąt,
bo liczy się ostatnia definicja. -
3:41 - 3:42Skasujmy to więc.
-
3:45 - 3:49"Draw" nie jest jedyną
predefiniowaną funkcją -
3:49 - 3:51zachowującą się wyjątkowo.
-
3:51 - 3:52Jest też grupa funkcji
-
3:53 - 3:57obsługujących reakcję myszy
i wciskanie klawiszy na klawiaturze. -
3:57 - 4:02Powiedzmy, że program
ma narysować kolorową elipsę, -
4:02 - 4:05gdy tylko użytkownik
poruszy myszką. -
4:05 - 4:09Załatwimy sprawę
właśnie taką funkcją. -
4:09 - 4:12"MouseX", "mouseY",
-
4:12 - 4:15a potem "ellipse".
-
4:15 - 4:18"MouseX", "mouseY"...
-
4:20 - 4:22No dobrze. Pięknie!
-
4:23 - 4:28Ta funkcja jest przywoływana
raz po raz, -
4:28 - 4:32nawet gdy użytkownik
nie porusza myszką, jak w tej chwili. -
4:32 - 4:35Program działa, robi to, czego żądamy,
-
4:35 - 4:38czyli maluje ładne elipsy
na całym monitorze. -
4:38 - 4:43Ale okazuje się, że jest
lepszy, wydajniejszy sposób. -
4:45 - 4:50Możemy zamienić funkcję "draw"
na "mouseMoved" -
4:51 - 4:54i zobaczmy... Wciąż działa!
-
4:55 - 4:59Nasze środowisko sprawdza,
czy w programach zdefiniowano -
4:59 - 5:02funkcję "mouseMoved", a jeśli tak,
-
5:02 - 5:06to przywołuje ją,
gdy użytkownik porusza myszką. -
5:06 - 5:10Ale funkcja nie zostanie przywołana,
gdy użytkownik myszką nie rusza. -
5:11 - 5:16Wcześniej przywoływaliśmy raz po raz
program w "draw", choć bez potrzeby. -
5:16 - 5:18Teraz przywołujemy go
-
5:19 - 5:23w "mouseMoved" tylko gdy "mouseX"
lub "mouseY" naprawdę się zmieniło. -
5:24 - 5:27Program stał się
wydajniejszy, a to dobrze. -
5:28 - 5:33Jeśli chcecie zmienić efekt działania
programu, gdy użytkownik rusza myszką, -
5:33 - 5:37to lepiej jest mieć ten program
w funkcji "mouseMoved". -
5:38 - 5:41Jest więcej
predefiniowanych funkcji; -
5:41 - 5:45przykłady znajdziecie
w dokumentacji: -
5:45 - 5:49"mousePressed",
"mouseReleased", "keyPressed" itd. -
5:50 - 5:54Pamiętajcie: chcąc użyć
specjalnej predefiniowanej funkcji, -
5:55 - 5:57jak "mouseMoved" lub "draw",
-
5:57 - 5:59poprawnie zapiszcie jej nazwę.
-
6:00 - 6:05Albo nadawajcie własnym funkcjom
nowe, niepowtarzalne nazwy.
- Title:
- Special ProcessingJS functions
- Description:
-
This is a video recording of a talk-through, uploaded to make it easier to create subtitles. Please watch the original interactive talk-through on Khan Academy, where you can pause and edit the code and see the code in better resolution: http://www.khanacademy.org/programming
- Video Language:
- English
- Duration:
- 06:08
Lech Mankiewicz edited Polish subtitles for Special ProcessingJS functions | ||
Lech Mankiewicz edited Polish subtitles for Special ProcessingJS functions | ||
Lech Mankiewicz edited Polish subtitles for Special ProcessingJS functions |