1 00:00:00,847 --> 00:00:03,306 Продовжимо досліджувати те, що ми можемо робити з об'єктами. 2 00:00:04,109 --> 00:00:08,001 Ми повертаємось до програми яку ми використовували при вивчені функцій. 3 00:00:08,465 --> 00:00:14,273 Ця програма з функцією drawWinston, знає як намалювати Вінстона в певних "x" і "y". 4 00:00:14,273 --> 00:00:20,910 Тоді тут ми викликаємо drawWinston 4 рази і кожний має різний набір X та Y координат 5 00:00:21,900 --> 00:00:28,009 Що ж, ви мене знаєте, коли я поглянула на ці 4 виклики drawWinston, що дуже подібні, 6 00:00:28,787 --> 00:00:34,104 все про, що я можу думати, це про те, що було б краще використати цикл і викликати 7 00:00:34,104 --> 00:00:39,194 лише один раз всередині циклу, змінюючи X та Y у кожному повторі циклу. 8 00:00:39,894 --> 00:00:44,036 Отже, щоб зробити це, нам слід придумати спосіб зберігання цих X та Y позицій 9 00:00:44,036 --> 00:00:47,036 у масиві, тому ми зможемо запустити цикл через масив. 10 00:00:47,036 --> 00:00:55,816 У нас 2 набори значень і ми можемо зробити 2 масиви. Один для позицій X інший для Y. 11 00:00:55,816 --> 00:01:08,648 Отже, X координата може мати 99, 294, 101, і 294. І позиції Y - 117, 117, 316, 316. 12 00:01:08,648 --> 00:01:12,589 Добре, тепер ми можемо запустити цикл з нашим циклом for. 13 00:01:12,589 --> 00:01:18,399 var i = 0; i < xPositions.length; i++ 14 00:01:18,399 --> 00:01:22,047 Отже, ми проходимо по кожному елементі у xPositions і введемо 15 00:01:22,047 --> 00:01:29,727 drawWinston(xPositions[i], yPositions[i]); 16 00:01:30,897 --> 00:01:33,926 Гаразд, поглямо чи запрацює, якщо видалити 17 00:01:33,926 --> 00:01:36,200 Так, працює 18 00:01:36,200 --> 00:01:41,175 І тепер ми можемо викликати ось це, просто цей рядок коду що виконує drawWinston 19 00:01:41,175 --> 00:01:44,645 але він обраховується в кожній позиції xPositions в масиві. 20 00:01:44,645 --> 00:01:50,409 Отже, ми можемо додати більше до цього ввівши щось типу... 10, тоді додати 1, 21 00:01:50,409 --> 00:01:57,889 а потім 1, і тоді 1, і потім ще 100 та 1. 22 00:01:57,889 --> 00:02:04,709 Зараз, це виглядає трохи не акуратно і це мені не подобається? так як мені важко 23 00:02:04,709 --> 00:02:13,119 побачити які координати X відносяться до Y Хочу щоб з першого погляду було зрозуміло 24 00:02:13,119 --> 00:02:14,389 які пари у мене з X. 25 00:02:14,859 --> 00:02:19,419 Замість цього, щоб переконатися я ідеально вирівняю над одним одним 26 00:02:19,419 --> 00:02:20,629 можливо так 27 00:02:20,629 --> 00:02:26,506 Отже, я хочу найти інший спосіб зберігання цих позицій 28 00:02:27,270 --> 00:02:30,570 Є одна ідея щоб зберігати їх як об'єкти. 29 00:02:30,631 --> 00:02:36,521 Подумайте про це, кожна позиція це два біти інформації: X та Y. Таким чином, ми 30 00:02:36,521 --> 00:02:41,544 могли б мати об'єкт, що має властивості Х та Y, а потім мати масив об'єктів 31 00:02:41,544 --> 00:02:44,044 з усіма позиціями X та Y. 32 00:02:44,044 --> 00:02:45,758 Отже. зробимо це 33 00:02:45,758 --> 00:02:51,395 Ми введемо var positions рівне масиву 34 00:02:51,395 --> 00:02:55,852 Але кожний елемент замість того, щоб бути числом буде об'єктом 35 00:02:56,312 --> 00:03:04,691 Отже, у нас фігурні дужки і тоді введемо X: 99, Y:117. 36 00:03:05,551 --> 00:03:13,392 Отже, тепер ми маємо одну з наших позицій тут, а потім ми додамо ще одну тут. 37 00:03:14,392 --> 00:03:30,897 Гаразд, X повинна бути 294, 117, третя буде 101, 316, а остання з них 294 і 316. 38 00:03:30,897 --> 00:03:37,524 І тепер у нас є масив об'єктів, де кожен об'єкт має значення Х та Y всередині. 39 00:03:37,524 --> 00:03:44,228 Отже тут, в нашому циклі for змінимо цю функцію, щоб повторювати positions.length 40 00:03:44,228 --> 00:03:48,993 Тоді ми пропустимо об'єкт. 41 00:03:48,993 --> 00:03:54,211 Гаразд, зараз він пропускає цілий об'єкт, але ми хочемо щоб він проходив по X та Y 42 00:03:54,211 --> 00:03:58,851 отже, нам потрібно positions[i].X та positions[i].Y. 43 00:03:59,341 --> 00:04:00,228 Тада! 44 00:04:00,228 --> 00:04:03,969 Зараз можемо позбутись цих старих нагромаджених масивів 45 00:04:05,029 --> 00:04:09,687 Чудово, і це виглядає набагато приємніше для мене і код більш читабельний, 46 00:04:09,687 --> 00:04:12,687 і завжди чим більш читабельний код тим краще 47 00:04:12,687 --> 00:04:20,335 Також це спрощує доповнення, якщо хочемо додати щось. Я додам ще 2 і тоді введемо 48 00:04:20,335 --> 00:04:24,805 X 200 Y 200, отримаємо маленького Вінстона по середині, тут. 49 00:04:26,805 --> 00:04:27,661 Чудово. 50 00:04:27,691 --> 00:04:31,266 Тепер я хочу показати вам дещо навіть веселіше, ніж це. 51 00:04:31,266 --> 00:04:38,635 Зверніть увагу на те як наша функція приймає 2 числа, а потім використовує їх 52 00:04:38,635 --> 00:04:42,877 І ми можемо змінити нашу функцію, то вона прийматиме об'єкт і набуватиме 53 00:04:42,877 --> 00:04:44,657 значень X та Y об'єкту. 54 00:04:44,657 --> 00:04:49,230 Це означає, що тут ми могли б просто передати об'єкт. 55 00:04:49,230 --> 00:04:50,846 Спробуємо це. 56 00:04:50,846 --> 00:04:53,596 Ми пропускаємо об'єкт, тепер він зламаний. 57 00:04:53,596 --> 00:05:00,178 Так як наша функція очікує 2 об'єкти, а отримує тільки 1, і тому, ми змінимо її 58 00:05:00,178 --> 00:05:04,433 щоб ввести, що це набуває facePosition, і тепер ми отримуємо помилку, що faceX 59 00:05:04,433 --> 00:05:07,433 не визначена, тому що раніше 60 00:05:07,433 --> 00:05:12,901 ми проходили по faceX як аргументу, але тепер він не існує, ми отримуємо об'єкт. 61 00:05:12,901 --> 00:05:20,899 І те що можемо зробити це зберегти позицію X від об'єкта всередині змінної faceX. 62 00:05:20,899 --> 00:05:24,684 Отже, ми говоримо, що отримали цей об'єкт, ми знаємо, цей об'єкт має властивість X, 63 00:05:24,684 --> 00:05:27,684 так що ми просто зберігатимемо, в змінній faceX. 64 00:05:27,684 --> 00:05:33,637 Ми можемо так само вчинити з Y, отже, faceY = facePosition.y. 65 00:05:33,637 --> 00:05:34,850 Тада! 66 00:05:34,850 --> 00:05:38,167 І тоді, решта частина функції використовує faceX та faceY. 67 00:05:38,167 --> 00:05:40,968 Тепер, нам слід переконатися, чи правильно написали їх, тому, що якби ми ввели хх, це 68 00:05:40,968 --> 00:05:43,968 не працюватиме, так як це не те, що тут 69 00:05:43,968 --> 00:05:48,125 в нашому масиві об'єктів, тому потрібно щоб відповідали один одному. 70 00:05:48,125 --> 00:05:53,651 Це дуже акуратно, і тепер ви можете мати масиви об'єктів, функції, які є об'єктах 71 00:05:53,651 --> 00:05:58,730 і ви дійсно виявите, що ваші програми можуть бути дуже потужним з тим, як 72 00:05:58,730 --> 00:06:00,160 вони структурують свої дані 73 00:06:00,160 --> 00:06:05,184 тим більше якщо так часто хотіти групувати X і Y разом, я думаю, ви знайдете їх 74 00:06:05,184 --> 00:06:08,926 особливо корисними у всіх ваших зображувальних та анімаційних програм тут. 75 00:06:08,926 --> 00:06:12,000 Таким чином, продовжуйте і отримуйте задоволення!