Tworzenie animacji w OMD, przy użycie 'setInterval' (Wersja Wideo)
-
0:01 - 0:04Mam stronę z Koleżką-O-Nie,
-
0:04 - 0:08który panikuje,
bo myśli, że będzie koniec świata. -
0:08 - 0:11Dokładnie za 500 sekund.
-
0:11 - 0:14Udoskonalę tę stronę.
-
0:14 - 0:17Zamiast liczby
pokaże się licznik czasu. -
0:17 - 0:20Odwiedzający będą widzieli,
ile czasu im zostało. -
0:21 - 0:24Żeby animować
część strony internetowej, -
0:24 - 0:27wybieramy w niej jakiś element,
-
0:27 - 0:29w którym coś zmieniamy.
-
0:29 - 0:33Zmiana ma następować
określoną liczbę razy na sekundę. -
0:33 - 0:38Zatem krok pierwszy.
Znajdę licznik po ID. -
0:38 - 0:40Proste.
-
0:40 - 0:46"var countdown = document
getElementById("countdown"). -
0:48 - 0:49Krok drugi.
-
0:49 - 0:52Zrobię funkcję, która odlicza wspak.
-
0:52 - 0:55"var countItDown = function()".
-
0:55 - 0:59Chcę tu zrobić "textContent".
-
1:00 - 1:04Wartość ma być równa poprzedniej
liczbie pomniejszonej o jeden. -
1:04 - 1:10A "textContent" jest ciągiem,
więc musimy zrobić z niego liczbę. -
1:10 - 1:13Użyjemy w tym celu
polecenia "parsefloat()". -
1:13 - 1:15I wtedy możemy odjąć 1.
-
1:17 - 1:21Dobrze. I w końcu chcemy
przywoływać tę funkcję -
1:21 - 1:26w określonych interwałach,
czyli pewną liczbę razy na sekundę. -
1:26 - 1:31Możemy to zrobić, korzystając
z polecenia "window.setInterval()". -
1:31 - 1:34Ta funkcja przyjmuje dwa argumenty:
-
1:34 - 1:36wywołanie zwrotne
-
1:36 - 1:41oraz liczbę milisekund do odczekania
przed kolejnym przywołaniem funkcji. -
1:41 - 1:43Możemy określić wywołanie zwrotne
-
1:43 - 1:47tak jak robimy to
dla detektora zdarzeń: po nazwie. -
1:47 - 1:52I teraz - idzie bardzo szybko!
Bo nie wprowadziliśmy 2. argumentu. -
1:52 - 1:55A musi to być
określona liczba milisekund. -
1:55 - 1:58Tutaj interesuje nas 1s,
więc wpiszemy 1000, -
1:58 - 2:01bo w jednej sekundzie
jest 1000 milisekund. -
2:01 - 2:04I już. Teraz odlicza po sekundzie.
-
2:05 - 2:09Lepiej nauczcie się jak najwięcej
w ciągu najbliższych 490 sekund! -
2:11 - 2:15Jest funkcja obiektu "window"
używana zamiast "setInterval". -
2:15 - 2:17To funkcja "setTimeout".
-
2:17 - 2:20Zmienię to tutaj,
-
2:20 - 2:24a wy spróbujcie zobaczyć różnicę.
Trzeba chwilę zaczekać. -
2:24 - 2:28Może teraz widzicie,
że gdy używamy polecenia "setTimeout", -
2:28 - 2:33przeglądarka
przywołuje funkcję jednokrotnie, -
2:33 - 2:35nie raz po raz.
-
2:35 - 2:39To nie jest zbyt praktyczne
w animacjach, -
2:39 - 2:42ale może się bardzo przydać
w innych przypadkach. -
2:42 - 2:45Np. gdybyśmy pokazywali
użytkownikom ostrzeżenie, -
2:45 - 2:48a po dziesięciu sekundach
chcieli je ukryć. -
2:49 - 2:53Zmienię to więc
z powrotem na "setInterval". -
2:54 - 2:56Testując takie animacje,
-
2:57 - 3:01sprawdzajmy,
co się dzieje w każdym punkcie. -
3:01 - 3:03Np. w punkcie 0.
-
3:03 - 3:06Dużo odliczania. Zanudzilibyście się!
-
3:06 - 3:12Dlatego zmienimy wartość początkową
na 5 i zobaczymy, co będzie. -
3:13 - 3:174, 3, 2, 1, 0...
-
3:17 - 3:22minus 1, minus 2... No dobrze.
Robi się dziwnie! -
3:22 - 3:27W chwili, gdy świat się skończy,
licznik powinien huknąć i zatrzymać się. -
3:27 - 3:30Chcemy więc przerwać animację,
-
3:30 - 3:33gdy pokaże się 0.
-
3:33 - 3:37Możemy to zrobić za pomocą
warunku "if" wewnątrz funkcji. -
3:37 - 3:39Najpierw...
-
3:40 - 3:45przechowam bieżący czas w zmiennej,
bo będzie używany kilkakrotnie. -
3:45 - 3:50Zaznaczę to, przeniosę tutaj
i wpiszę "currentTime". -
3:51 - 3:56A teraz: mogę zrobić warunek "if",
-
3:56 - 3:59który dopilnuje,
by tekst był uaktualniany -
3:59 - 4:01tylko przy "currentTime" > 0.
-
4:02 - 4:05Tylko wtedy ma odejmować 1.
-
4:05 - 4:08Muszę więc przenieść to tutaj.
-
4:11 - 4:15To działa,
ale w tej metodzie coś nie gra. -
4:15 - 4:20Przeglądarka przywołuje funkcję
"countItDown" raz na sekundę, -
4:20 - 4:22póki ta strona nie zostanie zamknięta.
-
4:22 - 4:25Nie każcie przeglądarkom
przywoływać funkcji bez powodu. -
4:25 - 4:28Mają mnóstwo innych
ważnych rzeczy do roboty. -
4:28 - 4:32Chcemy powiedzieć przeglądarce,
że kiedy licznik dojdzie do 0, -
4:32 - 4:36nie trzeba już
przywoływać tej funkcji. -
4:36 - 4:40Możemy to zrobić za pomocą
nowej metody: "window.clearInterval()". -
4:41 - 4:44Umieścimy to w tym "else":
-
4:44 - 4:47"window.clearInterval()".
-
4:48 - 4:52Wprowadzimy argument, by przeglądarka
wiedziała, który interwał usunąć. -
4:52 - 4:56Bo przecież na stronie
może być ich wiele! -
4:56 - 4:59A żeby wiedzieć,
który interwał usunąć, -
4:59 - 5:03przechowujemy
wynik "setInterval" w zmiennej. -
5:03 - 5:05Mam go teraz w zmiennej licznika;
-
5:05 - 5:09skopiuję, wkleję...
- i przeglądarka wie, co wyczyścić. -
5:09 - 5:11Kiedy licznik dojdzie do 0,
-
5:11 - 5:16przeglądarka przestanie aktualizować
i przywoływać tę funkcję. -
5:16 - 5:22Przy każdej animacji zastanówcie się,
jaki warunek ma ją zatrzymywać. -
5:22 - 5:26Oczywiście, możecie robić animacje,
które powinny trwać bez końca, -
5:26 - 5:29ale starajcie się, żeby były miłe!
-
5:29 - 5:34Bo przecież przeglądarka pracuje,
przywołując tę funkcję. -
5:34 - 5:38A teraz sprawcie,
że będzie wielkie "bum!".
- Title:
- Tworzenie animacji w OMD, przy użycie 'setInterval' (Wersja Wideo)
- Description:
-
To tylko zapis naszych interaktywnych sesji poświęconych kodowaniu, stworzony by ułatwić ich przełożenie na inne języki.
Polecamy obejrzenie oryginalnej sesji na Khan Academy, gdzie możecie zatrzymać sesje, by edytować własny kod, jak również zobaczyć zapis kodu w wyższej rozdzielczości:
http://www.khanacademy.org/computer-programming - Video Language:
- English
- Duration:
- 05:39
Lech Mankiewicz edited Polish subtitles for Animating DOM with setInterval (Video Version) | ||
Dominik Kamiński edited Polish subtitles for Animating DOM with setInterval (Video Version) | ||
Dominik Kamiński edited Polish subtitles for Animating DOM with setInterval (Video Version) | ||
Dominik Kamiński edited Polish subtitles for Animating DOM with setInterval (Video Version) | ||
Dominik Kamiński edited Polish subtitles for Animating DOM with setInterval (Video Version) | ||
Dominik Kamiński edited Polish subtitles for Animating DOM with setInterval (Video Version) |