[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.85,0:00:03.31,Default,,0000,0000,0000,,Продовжимо досліджувати те, що ми можемо\Nробити з об'єктами. Dialogue: 0,0:00:04.11,0:00:08.00,Default,,0000,0000,0000,,Ми повертаємось до програми яку ми\Nвикористовували при вивчені функцій. Dialogue: 0,0:00:08.46,0:00:14.27,Default,,0000,0000,0000,,Ця програма з функцією drawWinston, знає\Nяк намалювати Вінстона в певних "x" і "y". Dialogue: 0,0:00:14.27,0:00:20.91,Default,,0000,0000,0000,,Тоді тут ми викликаємо drawWinston 4 рази\Nі кожний має різний набір X та Y координат Dialogue: 0,0:00:21.90,0:00:28.01,Default,,0000,0000,0000,,Що ж, ви мене знаєте, коли я поглянула на\Nці 4 виклики drawWinston, що дуже подібні, Dialogue: 0,0:00:28.79,0:00:34.10,Default,,0000,0000,0000,,все про, що я можу думати, це про те, що\Nбуло б краще використати цикл і викликати Dialogue: 0,0:00:34.10,0:00:39.19,Default,,0000,0000,0000,,лише один раз всередині циклу, змінюючи\NX та Y у кожному повторі циклу. Dialogue: 0,0:00:39.89,0:00:44.04,Default,,0000,0000,0000,,Отже, щоб зробити це, нам слід придумати\Nспосіб зберігання цих X та Y позицій Dialogue: 0,0:00:44.04,0:00:47.04,Default,,0000,0000,0000,,у масиві, тому ми зможемо запустити цикл\Nчерез масив. Dialogue: 0,0:00:47.04,0:00:55.82,Default,,0000,0000,0000,,У нас 2 набори значень і ми можемо зробити\N2 масиви. Один для позицій X інший для Y. Dialogue: 0,0:00:55.82,0:01:08.65,Default,,0000,0000,0000,,Отже, X координата може мати 99, 294, 101,\Nі 294. І позиції Y - 117, 117, 316, 316. Dialogue: 0,0:01:08.65,0:01:12.59,Default,,0000,0000,0000,,Добре, тепер ми можемо запустити цикл з\Nнашим циклом for. Dialogue: 0,0:01:12.59,0:01:18.40,Default,,0000,0000,0000,,var i = 0; i < xPositions.length; i++ Dialogue: 0,0:01:18.40,0:01:22.05,Default,,0000,0000,0000,,Отже, ми проходимо по кожному елементі у\NxPositions і введемо Dialogue: 0,0:01:22.05,0:01:29.73,Default,,0000,0000,0000,,drawWinston(xPositions[i], yPositions[i]); Dialogue: 0,0:01:30.90,0:01:33.93,Default,,0000,0000,0000,,Гаразд, поглямо чи запрацює, якщо видалити Dialogue: 0,0:01:33.93,0:01:36.20,Default,,0000,0000,0000,,Так, працює Dialogue: 0,0:01:36.20,0:01:41.18,Default,,0000,0000,0000,,І тепер ми можемо викликати ось це, просто\Nцей рядок коду що виконує drawWinston Dialogue: 0,0:01:41.18,0:01:44.64,Default,,0000,0000,0000,,але він обраховується в кожній позиції\NxPositions в масиві. Dialogue: 0,0:01:44.64,0:01:50.41,Default,,0000,0000,0000,,Отже, ми можемо додати більше до цього\Nввівши щось типу... 10, тоді додати 1, Dialogue: 0,0:01:50.41,0:01:57.89,Default,,0000,0000,0000,,а потім 1, і тоді 1, і потім ще 100 та 1. Dialogue: 0,0:01:57.89,0:02:04.71,Default,,0000,0000,0000,,Зараз, це виглядає трохи не акуратно і це\Nмені не подобається? так як мені важко Dialogue: 0,0:02:04.71,0:02:13.12,Default,,0000,0000,0000,,побачити які координати X відносяться до Y\NХочу щоб з першого погляду було зрозуміло Dialogue: 0,0:02:13.12,0:02:14.39,Default,,0000,0000,0000,,які пари у мене з X. Dialogue: 0,0:02:14.86,0:02:19.42,Default,,0000,0000,0000,,Замість цього, щоб переконатися я\Nідеально вирівняю над одним одним Dialogue: 0,0:02:19.42,0:02:20.63,Default,,0000,0000,0000,,можливо так Dialogue: 0,0:02:20.63,0:02:26.51,Default,,0000,0000,0000,,Отже, я хочу найти інший спосіб\Nзберігання цих позицій Dialogue: 0,0:02:27.27,0:02:30.57,Default,,0000,0000,0000,,Є одна ідея щоб зберігати їх як об'єкти. Dialogue: 0,0:02:30.63,0:02:36.52,Default,,0000,0000,0000,,Подумайте про це, кожна позиція це два\Nбіти інформації: X та Y. Таким чином, ми Dialogue: 0,0:02:36.52,0:02:41.54,Default,,0000,0000,0000,,могли б мати об'єкт, що має властивості Х\Nта Y, а потім мати масив об'єктів Dialogue: 0,0:02:41.54,0:02:44.04,Default,,0000,0000,0000,,з усіма позиціями X та Y. Dialogue: 0,0:02:44.04,0:02:45.76,Default,,0000,0000,0000,,Отже. зробимо це Dialogue: 0,0:02:45.76,0:02:51.40,Default,,0000,0000,0000,,Ми введемо var positions рівне масиву Dialogue: 0,0:02:51.40,0:02:55.85,Default,,0000,0000,0000,,Але кожний елемент замість того, \Nщоб бути числом буде об'єктом Dialogue: 0,0:02:56.31,0:03:04.69,Default,,0000,0000,0000,,Отже, у нас фігурні дужки і тоді введемо\NX: 99, Y:117. Dialogue: 0,0:03:05.55,0:03:13.39,Default,,0000,0000,0000,,Отже, тепер ми маємо одну з наших позицій\Nтут, а потім ми додамо ще одну тут. Dialogue: 0,0:03:14.39,0:03:30.90,Default,,0000,0000,0000,,Гаразд, X повинна бути 294, 117, третя\Nбуде 101, 316, а остання з них 294 і 316. Dialogue: 0,0:03:30.90,0:03:37.52,Default,,0000,0000,0000,,І тепер у нас є масив об'єктів, де кожен\Nоб'єкт має значення Х та Y всередині. Dialogue: 0,0:03:37.52,0:03:44.23,Default,,0000,0000,0000,,Отже тут, в нашому циклі for змінимо цю\Nфункцію, щоб повторювати positions.length Dialogue: 0,0:03:44.23,0:03:48.99,Default,,0000,0000,0000,,Тоді ми пропустимо об'єкт. Dialogue: 0,0:03:48.99,0:03:54.21,Default,,0000,0000,0000,,Гаразд, зараз він пропускає цілий об'єкт,\Nале ми хочемо щоб він проходив по X та Y Dialogue: 0,0:03:54.21,0:03:58.85,Default,,0000,0000,0000,,отже, нам потрібно positions[i].X та\Npositions[i].Y. Dialogue: 0,0:03:59.34,0:04:00.23,Default,,0000,0000,0000,,Тада! Dialogue: 0,0:04:00.23,0:04:03.97,Default,,0000,0000,0000,,Зараз можемо позбутись цих старих\Nнагромаджених масивів Dialogue: 0,0:04:05.03,0:04:09.69,Default,,0000,0000,0000,,Чудово, і це виглядає набагато приємніше\Nдля мене і код більш читабельний, Dialogue: 0,0:04:09.69,0:04:12.69,Default,,0000,0000,0000,,і завжди чим більш читабельний код\Nтим краще Dialogue: 0,0:04:12.69,0:04:20.34,Default,,0000,0000,0000,,Також це спрощує доповнення, якщо хочемо\Nдодати щось. Я додам ще 2 і тоді введемо Dialogue: 0,0:04:20.34,0:04:24.80,Default,,0000,0000,0000,,X 200 Y 200, отримаємо маленького Вінстона\Nпо середині, тут. Dialogue: 0,0:04:26.80,0:04:27.66,Default,,0000,0000,0000,,Чудово. Dialogue: 0,0:04:27.69,0:04:31.27,Default,,0000,0000,0000,,Тепер я хочу показати вам дещо навіть\Nвеселіше, ніж це. Dialogue: 0,0:04:31.27,0:04:38.64,Default,,0000,0000,0000,,Зверніть увагу на те як наша функція\Nприймає 2 числа, а потім використовує їх Dialogue: 0,0:04:38.64,0:04:42.88,Default,,0000,0000,0000,,І ми можемо змінити нашу функцію, то вона\Nприйматиме об'єкт і набуватиме Dialogue: 0,0:04:42.88,0:04:44.66,Default,,0000,0000,0000,,значень X та Y об'єкту. Dialogue: 0,0:04:44.66,0:04:49.23,Default,,0000,0000,0000,,Це означає, що тут ми могли б\Nпросто передати об'єкт. Dialogue: 0,0:04:49.23,0:04:50.85,Default,,0000,0000,0000,,Спробуємо це. Dialogue: 0,0:04:50.85,0:04:53.60,Default,,0000,0000,0000,,Ми пропускаємо об'єкт, тепер він зламаний. Dialogue: 0,0:04:53.60,0:05:00.18,Default,,0000,0000,0000,,Так як наша функція очікує 2 об'єкти, а\Nотримує тільки 1, і тому, ми змінимо її Dialogue: 0,0:05:00.18,0:05:04.43,Default,,0000,0000,0000,,щоб ввести, що це набуває facePosition, і\Nтепер ми отримуємо помилку, що faceX Dialogue: 0,0:05:04.43,0:05:07.43,Default,,0000,0000,0000,,не визначена, тому що раніше Dialogue: 0,0:05:07.43,0:05:12.90,Default,,0000,0000,0000,,ми проходили по faceX як аргументу, але\Nтепер він не існує, ми отримуємо об'єкт. Dialogue: 0,0:05:12.90,0:05:20.90,Default,,0000,0000,0000,,І те що можемо зробити це зберегти позицію\NX від об'єкта всередині змінної faceX. Dialogue: 0,0:05:20.90,0:05:24.68,Default,,0000,0000,0000,,Отже, ми говоримо, що отримали цей об'єкт,\Nми знаємо, цей об'єкт має властивість X, Dialogue: 0,0:05:24.68,0:05:27.68,Default,,0000,0000,0000,,так що ми просто зберігатимемо,\Nв змінній faceX. Dialogue: 0,0:05:27.68,0:05:33.64,Default,,0000,0000,0000,,Ми можемо так само вчинити з\NY, отже, faceY = facePosition.y. Dialogue: 0,0:05:33.64,0:05:34.85,Default,,0000,0000,0000,,Тада! Dialogue: 0,0:05:34.85,0:05:38.17,Default,,0000,0000,0000,,І тоді, решта частина функції\Nвикористовує faceX та faceY. Dialogue: 0,0:05:38.17,0:05:40.97,Default,,0000,0000,0000,,Тепер, нам слід переконатися, чи правильно\Nнаписали їх, тому, що якби ми ввели хх, це Dialogue: 0,0:05:40.97,0:05:43.97,Default,,0000,0000,0000,,не працюватиме, так як це не те, що тут Dialogue: 0,0:05:43.97,0:05:48.12,Default,,0000,0000,0000,,в нашому масиві об'єктів, тому потрібно\Nщоб відповідали один одному. Dialogue: 0,0:05:48.12,0:05:53.65,Default,,0000,0000,0000,,Це дуже акуратно, і тепер ви можете мати \Nмасиви об'єктів, функції, які є об'єктах Dialogue: 0,0:05:53.65,0:05:58.73,Default,,0000,0000,0000,,і ви дійсно виявите, що ваші програми\Nможуть бути дуже потужним з тим, як Dialogue: 0,0:05:58.73,0:06:00.16,Default,,0000,0000,0000,,вони структурують свої дані Dialogue: 0,0:06:00.16,0:06:05.18,Default,,0000,0000,0000,,тим більше якщо так часто хотіти групувати\NX і Y разом, я думаю, ви знайдете їх Dialogue: 0,0:06:05.18,0:06:08.93,Default,,0000,0000,0000,,особливо корисними у всіх ваших \Nзображувальних та анімаційних програм тут. Dialogue: 0,0:06:08.93,0:06:12.00,Default,,0000,0000,0000,,Таким чином, продовжуйте\Nі отримуйте задоволення!