0:00:00.963,0:00:03.969 Dowiadujmy się dalej, co można[br]zrobić z obiektami. 0:00:04.070,0:00:08.249 Sięgnijmy do programu[br]z filmiku o funkcjach. 0:00:08.349,0:00:11.029 Ma on funkcję „drawWinston”, 0:00:11.129,0:00:14.512 która umie narysować Winstona[br]w danym „x” i „y”... 0:00:14.612,0:00:17.925 Tutaj przywołujemy tę funkcję[br]cztery razy, 0:00:18.025,0:00:20.874 zawsze z innymi współrzędnymi. 0:00:21.710,0:00:25.310 Znacie mnie. Gdy patrzę na te cztery[br]rysunki Winstona, 0:00:25.410,0:00:28.165 tak podobne do siebie, 0:00:28.265,0:00:32.298 myślę tylko, że dużo lepiej[br]byłoby użyć pętli. 0:00:33.111,0:00:36.107 I przywołać funkcję raz,[br]wewnątrz pętli, 0:00:36.207,0:00:39.450 zmieniając „x” i „y”[br]w każdym powtórzeniu pętli. 0:00:40.103,0:00:44.373 W tym celu musimy znaleźć sposób[br]na przechowywanie pozycji „x” i „y”, 0:00:44.473,0:00:47.577 w tablicy, żebyśmy mieli[br]do nich dostep. 0:00:47.677,0:00:49.621 Mamy dwa zestawy wartości, 0:00:49.721,0:00:51.989 więc moglibyśmy zrobić dwie tablice. 0:00:52.089,0:00:56.209 Jedną dla pozycji „x”,[br]drugą dla pozycji „y”. 0:00:56.309,0:01:01.788 Dajmy pozycje „x”:[br]99, 294, 101 i 294... 0:01:02.299,0:01:07.964 a pozycje „y”[br]to 117, 117, 316, 316. 0:01:09.265,0:01:11.563 Teraz możemy zrobić tu pętlę, 0:01:11.663,0:01:14.276 pisząc: for-loop var i = 0; 0:01:14.376,0:01:18.367 i < xPositions.length; i++ 0:01:18.735,0:01:21.286 Przejdziemy przez każdy[br]element „xPositions”, 0:01:21.386,0:01:25.067 i napiszemy:[br]drawWinston(xPositions[i], 0:01:25.658,0:01:29.398 yPositions[i]); 0:01:30.709,0:01:34.508 Sprawdźmy, czy to działa.[br]Skasujmy... 0:01:34.608,0:01:35.573 Udało się! 0:01:35.673,0:01:38.752 Możemy to przywołać. 0:01:38.852,0:01:41.146 Jedna linijka programu[br]rysuje Winstona 0:01:41.246,0:01:44.629 w każdej pozycji[br]z tablicy „xPositions”. 0:01:45.150,0:01:48.669 Możemy dodawać więcej.[br]Powiedzmy od 10. 0:01:48.769,0:01:53.545 Potem dodajemy 1, i 1, i 1... 0:01:54.242,0:01:57.887 a później 100, i 1... 0:01:58.259,0:02:01.533 Zrobił się tu bałagan. 0:02:01.904,0:02:05.527 Niedobrze, bo trudno mi zobaczyć, 0:02:05.627,0:02:08.383 który „x” odnosi się do którego „y”. 0:02:08.483,0:02:12.606 A ja chcę na pierwszy[br]rzut oka widzieć 0:02:12.706,0:02:16.788 pary x-y, zamiast pilnować, 0:02:16.888,0:02:20.898 żeby były idealnie ustawione[br]w pionie, np. tak. 0:02:21.594,0:02:27.005 Chcę znaleźć inny sposób[br]przechowywania tych pozycji. 0:02:27.105,0:02:30.860 Możemy przechowywać je[br]jako obiekty. 0:02:30.960,0:02:36.055 Każda pozycja to dwie[br]informacje: „x” i „y”. 0:02:36.155,0:02:39.683 Możemy zrobić obiekt[br]o właściwościach „x” i „y.” 0:02:39.783,0:02:44.652 Możemy mieć tablice obiektów[br]z pozycjami „x” i „y”. 0:02:44.752,0:02:45.929 Zróbmy to więc. 0:02:46.029,0:02:48.182 Napiszemy: „var positions” 0:02:48.785,0:02:51.432 równa się... i to też będzie tablica. 0:02:51.532,0:02:56.378 Ale każdy element, zamiast być[br]liczbą, będzie obiektem. 0:02:56.478,0:02:59.095 Mamy klamry... 0:02:59.195,0:03:04.807 I napiszemy „x:99” i „y:117”. 0:03:05.388,0:03:08.313 Mamy tu jedną z naszych pozycji, 0:03:09.103,0:03:13.909 a drugą dodamy tutaj. 0:03:14.234,0:03:18.886 Dobrze; „x” wyniesie 294, 117, 0:03:19.175,0:03:22.013 dalej 101, 0:03:22.594,0:03:24.033 dalej 316, 0:03:25.217,0:03:30.450 a na koniec 294 i 316. 0:03:30.550,0:03:35.016 I jest tablica obiektów, 0:03:35.116,0:03:38.430 z których każdy[br]ma właściwości „x” i „y”. 0:03:38.530,0:03:41.170 Teraz za pomocą pętli FOR 0:03:41.270,0:03:44.769 wypiszemy każdy obiekt[br]tablicy „positions”. 0:03:44.869,0:03:49.157 Następnie przekażemy obiekt. 0:03:49.257,0:03:53.894 Na razie przekazujemy cały obiekt,[br]a chcemy przekazać wartości „x” i „y”. 0:03:53.994,0:03:59.026 Potrzebujemy zatem[br]positions[i].X i positions[i].Y. 0:03:59.126,0:04:00.272 Hura! 0:04:00.612,0:04:03.995 Możemy skasować te stare,[br]zaśmiecone tablice. 0:04:04.095,0:04:07.919 Teraz wygląda to znacznie ładniej, 0:04:08.019,0:04:12.934 a program jest prostszy do czytania.[br]Im łatwiej, tym lepiej! 0:04:13.034,0:04:16.625 I łatwiej jest dodawać nowe obiekty.[br]Jeśli chcę dodać 1... 0:04:16.726,0:04:18.995 Dodam tę parę. 0:04:19.095,0:04:23.383 Powiedzmy, że „x” to 200,[br]„y” też... 0:04:23.483,0:04:26.379 i pośrodku pojawi się Winston. 0:04:26.479,0:04:27.509 Fajnie! 0:04:27.609,0:04:31.580 A teraz pokażę wam[br]coś jeszcze lepszego. 0:04:31.680,0:04:37.083 Zauważcie, że nasza funkcja[br]przyjmuje dwie liczby 0:04:37.183,0:04:38.782 i korzysta z nich. 0:04:38.882,0:04:42.023 Możemy zmienić funkcję tak,[br]że będzie oczekiwać obiektu 0:04:42.123,0:04:45.233 i weźmie z niego „x” oraz „y”. 0:04:45.333,0:04:49.622 To znaczy, że możemy[br]zabrać stąd obiekt. 0:04:49.722,0:04:50.946 Spróbujmy. 0:04:51.046,0:04:53.616 Zabieramy obiekt, teraz nie działa. 0:04:53.716,0:04:57.610 Bo nasza funkcja[br]oczekuje dwóch obiektów, 0:04:57.710,0:05:00.257 a dostaje tylko jeden.[br]Zmienimy to więc. 0:05:00.357,0:05:02.712 Damy tu „facePosition”, 0:05:02.812,0:05:07.065 ale widać komunikat o błędzie,[br]bo FaceX nie jest zdefiniowane. 0:05:07.165,0:05:10.685 Wcześniej „faceX” było argumentem, 0:05:10.785,0:05:13.408 lecz teraz nie istnieje.[br]Mamy tylko obiekt. 0:05:13.508,0:05:17.277 Możemy zapisać pozycję „x” 0:05:17.377,0:05:20.946 z obiektu wewnątrz zmiennej „faceX”. 0:05:21.046,0:05:22.871 Mamy więc obiekt, 0:05:22.971,0:05:24.870 wiemy, że ma właściwość „x”, 0:05:24.970,0:05:28.214 i będziemy go przechowywać[br]w zmiennej „faceX”. 0:05:28.402,0:05:33.269 To samo możemy zrobić z „y”:[br]„faceY = facePosition.y”. 0:05:33.949,0:05:38.291 I proszę! A reszta funkcji[br]używa „faceX” i „faceY”. 0:05:38.391,0:05:41.937 Trzeba to dobrze zapisać.[br]„xx” nie zadziała, 0:05:42.037,0:05:46.325 bo tego nie ma tutaj,[br]w naszej tablicy obiektów. 0:05:46.425,0:05:48.345 Musi pasować! 0:05:48.445,0:05:52.014 Wspaniale: teraz możecie mieć[br]tablice obiektów, 0:05:52.114,0:05:54.057 funkcje przyjmujące obiekty, 0:05:54.157,0:05:58.098 i przekonacie się,[br]że programy są świetne 0:05:58.198,0:06:00.396 w organizacji danych. 0:06:00.489,0:06:04.378 Zwłaszcza że często chcemy[br]łączyć „x” z „y”. 0:06:04.478,0:06:08.686 Tablice obiektów przydadzą się[br]podczas rysowania i animacji. 0:06:08.786,0:06:11.403 Korzystajcie z nich[br]i bawcie się dobrze!