[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:01.34,0:00:03.31,Default,,0000,0000,0000,,בואו נמשיך לחקור מה אנו יכולים לעשות עם אובייקטים. Dialogue: 0,0:00:04.11,0:00:08.00,Default,,0000,0000,0000,,אנחנו שוב עם התוכנית שהשתמשנו בה במדריך לפונקציות. Dialogue: 0,0:00:08.72,0:00:14.27,Default,,0000,0000,0000,,בתוכנית הזאת יש פונקציית drawWinston שיודעת לצייר את ווינסטון במיקום X ו-Y מסוים. Dialogue: 0,0:00:14.27,0:00:22.58,Default,,0000,0000,0000,,ואז כאן למטה, אנחנו קוראים ל-drawWinston ארבע פעמים, כל פעם עם קואורדינטות X ו-Y שונות. Dialogue: 0,0:00:22.58,0:00:28.01,Default,,0000,0000,0000,,אתם מכירים אותי, כשאני מסתכלת על ארבעת הקריאות האלו לפונקציה drawWinston שהן כל כך דומות, Dialogue: 0,0:00:28.79,0:00:39.19,Default,,0000,0000,0000,,כל מה שאני יכולה לחשוב זה כמה זה היה יותר טוב אם יכולנו להשתמש בלולאה ולקרוא לפונקציה רק פעם אחת בתוך הלולאה, עם שינוי קואורדינטות ה-X ו-Y בכל סיבוב. Dialogue: 0,0:00:39.19,0:00:47.04,Default,,0000,0000,0000,,אז, כדי לעשות את זה, אנחנו צריכים למצוא דרך לשמור את מיקומי ה-X וה-Y במערך כדי שנוכל לעבור עליו בלולאה. Dialogue: 0,0:00:47.04,0:00:55.82,Default,,0000,0000,0000,,ובכן, יש לנו שני סטים של ערכים, אז נוכל לעשות את זה עם שני מערכים. אחד למיקומי ה-X, ואחד למיקומי ה-Y. Dialogue: 0,0:00:55.82,0:01:08.65,Default,,0000,0000,0000,,עבור מיקומי X יהיו לנו למשל, 99, 294, 101, ו-294, ועבור מיקומי Y יהיו לנו 117, 117, 316, 316. Dialogue: 0,0:01:08.65,0:01:18.40,Default,,0000,0000,0000,,אוקיי, עכשיו נוכל לעבור עם לולאה על המערכים האלו עם לולאת for. נרשום: var i = 0;\Ni < xPositions.length;\Ni++ Dialogue: 0,0:01:18.40,0:01:29.73,Default,,0000,0000,0000,,אז אנחנו עוברים על כל איבר במערך xPositions והפקודה שנרשום היא\NdrawWinston(xPositions[i], yPositions[i]) Dialogue: 0,0:01:29.73,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:44.64,Default,,0000,0000,0000,,עכשיו יש לנו שורת קוד אחת שקוראת לפונקציה drawWinston, והיא מתבצעת עבור כל מיקום במערך xPosition. Dialogue: 0,0:01:44.64,0:01:56.74,Default,,0000,0000,0000,,אנחנו יכולים להוסיף עוד... (10,1) ואז (1,1), ו-(100,1). Dialogue: 0,0:01:56.74,0:02:13.11,Default,,0000,0000,0000,,עכשיו זה מתחיל להיראות קצת מבולגן, ואני לא אוהבת את זה, כי זה ממש קשה לראות איזה Xים שייכים לאיזה Yים. אני רוצה רק להעיף מבט ולדעת מה הם Dialogue: 0,0:02:13.11,0:02:20.93,Default,,0000,0000,0000,,הזוגות של X ו-Y, במקום שאצטרך לוודא שאני מסדרת אותם אחד מעל השני במערך. Dialogue: 0,0:02:22.41,0:02:26.73,Default,,0000,0000,0000,,אני רוצה למצוא דרך אחרת לשמור את המיקומים האלו. Dialogue: 0,0:02:26.73,0:02:30.79,Default,,0000,0000,0000,,רעיון אחד הוא לשמור אותם בתור אובייקטים. Dialogue: 0,0:02:30.79,0:02:38.66,Default,,0000,0000,0000,,תחשבו על זה, כל מיקום הוא בסה"כ שני חלקי מידע: מיקום ה-X וה-Y. אז, אנחנו יכולים להחזיק אובייקט שיש לו מאפיין X ומאפיין Y Dialogue: 0,0:02:38.66,0:02:43.97,Default,,0000,0000,0000,,ואז יכול להיות לנו מערך של אובייקטים עם כל מיקומי ה-X וה-Y. Dialogue: 0,0:02:43.97,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,,אבל, כל איבר, במקום להיות מספר, הולך להיות אובייקט. Dialogue: 0,0:02:55.85,0:03:04.69,Default,,0000,0000,0000,,אז, כאן הסוגריים המסלוסלים שלנו, ואז נרשום פשוט: X: 99, Y: 117. Dialogue: 0,0:03:04.69,0:03:13.39,Default,,0000,0000,0000,,אוקיי, אז עכשיו יש לנו את אחד המיקומים שלנו, נוסיף עוד אחד. Dialogue: 0,0:03:13.39,0:03:30.90,Default,,0000,0000,0000,,אוקיי, X צריך להיות 294, 117, השלישי הולך להיות 101, 316, והאחרון 294, 316. Dialogue: 0,0:03:30.90,0:03:37.52,Default,,0000,0000,0000,,אוקיי, עכשיו יש לנו מערך של אובייקטים, וכל אובייקט מכיל מאפייני X ו-Y. Dialogue: 0,0:03:37.52,0:03:44.23,Default,,0000,0000,0000,,כאן למטה, בלולאת ה-for שלנו, נשנה את הלולאה כך שתרוץ מספר פעמים כאורך המערך positions.length Dialogue: 0,0:03:44.23,0:03:48.99,Default,,0000,0000,0000,,אז נעביר את האובייקט Dialogue: 0,0:03:48.99,0:03:58.85,Default,,0000,0000,0000,,עכשיו זה מעביר את כל האובייקט, אבל אנחנו רוצים להעביר את ה-X וה-Y, אז אנחנו צריכים לרשום: positions[i].X ו-positions[i].Y. Dialogue: 0,0:03:58.85,0:04:00.23,Default,,0000,0000,0000,,טה-דה! Dialogue: 0,0:04:00.23,0:04:03.97,Default,,0000,0000,0000,,עכשיו, אנחנו יכולים להיפטר מהמערכים הישנים. Dialogue: 0,0:04:03.97,0:04:12.69,Default,,0000,0000,0000,,מעולה, זה נראה הרבה יותר נחמד, והופך את הקוד להרבה יותר קריא - וזה תמיד יותר טוב שיש לנו קוד יותר קריא. Dialogue: 0,0:04:12.69,0:04:24.80,Default,,0000,0000,0000,,זה גם הופך את זה לפשוט יותר להוסיף מיקומים, אם נרצה. אני אוסיף אחד כאן - X הוא 200, Y הוא 200, נכניס את ווינסטון שם באמצע. Dialogue: 0,0:04:24.80,0:04:27.30,Default,,0000,0000,0000,,מגניב. Dialogue: 0,0:04:27.30,0:04:31.27,Default,,0000,0000,0000,,עכשיו אני רוצה להראות לכם משהו אפילו יותר יפה. Dialogue: 0,0:04:31.27,0:04:38.64,Default,,0000,0000,0000,,שימו לב שהפונקציה שלנו מקבלת כרגע שני מספרים, ואז משתמשת בשני המספרים האלו. Dialogue: 0,0:04:38.64,0:04:44.66,Default,,0000,0000,0000,,אנחנו יכולים לשנות את הפונקציה כך שהיא תצפה לאובייקט יחיד, ואז היא לוקחת את מאפייני ה-X וה-Y מהאובייקט, Dialogue: 0,0:04:44.66,0:04:49.23,Default,,0000,0000,0000,,כך שכאן נוכל פשוט להעביר את האובייקט. 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,,זה כי הפונקציה שלנו עדיין מצפה לשני פרמטרים והיא מקבלת רק אחד, אז נשנה את זה Dialogue: 0,0:05:00.18,0:05:07.43,Default,,0000,0000,0000,,נרשום שהיא מקבלת facePosition, ועכשיו אנחנו מקבלים עוד שגיאה, ש-faceX לא מוגדר Dialogue: 0,0:05:07.43,0:05:12.90,Default,,0000,0000,0000,,כי קודם העברנו את faceX כפרמטר, אבל עכשיו הוא לא קיים, אנחנו מקבלים רק אובייקט. Dialogue: 0,0:05:12.90,0:05:20.90,Default,,0000,0000,0000,,אז, מה שאנחנו יכולים לעשות, זה לשמור את מיקום ה-X שיש באובייקט בתוך המשתנה faceX. Dialogue: 0,0:05:20.90,0:05:27.68,Default,,0000,0000,0000,,אז קיבלנו את האובייקט הזה, אנחנו יודעים שיש לו מאפיין X, אז אנחנו פשוט הולכים לשמור את הערך הזה לתוך המשתנה faceX. Dialogue: 0,0:05:27.68,0:05:33.64,Default,,0000,0000,0000,,אנחנו יכולים לעשות את אותו הדבר עם Y, אז 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,,ואז, שאר הפונקציה משתמשת ב-faceX וב-faceY. Dialogue: 0,0:05:38.17,0:05:43.97,Default,,0000,0000,0000,,שימו לב, אנחנו צריכים לוודא שאנחנו מאייתים את זה נכון, אם היינו כותבים xx, זה לא היה עובד כי זה לא מה שרשום למטה Dialogue: 0,0:05:43.97,0:05:48.12,Default,,0000,0000,0000,,במערך האובייקטים שלנו - זה צריך להתאים. Dialogue: 0,0:05:48.12,0:05:52.76,Default,,0000,0000,0000,,זה די מגניב - אתם יכולים ליצור מערכים של אובייקטים, ליצור פונקציות שמקבלות אובייקטים Dialogue: 0,0:05:52.76,0:06:00.16,Default,,0000,0000,0000,,ואתם תגלו שלתוכניות שלכם יכול להיות הרבה כוח עם הדרך שבה אובייקטים מארגנים מידע Dialogue: 0,0:06:00.16,0:06:05.18,Default,,0000,0000,0000,,בייחוד כי זה מאוד נפוץ לרצות לצמד את X ו-Y יחד, אני חושבת שתמצאו את זה Dialogue: 0,0:06:05.18,0:06:08.93,Default,,0000,0000,0000,,מאוד שימושי בכל תוכניות הציור והאנימציה. Dialogue: 0,0:06:08.93,0:06:12.00,Default,,0000,0000,0000,,אז תמשיכו עם זה ותהנו!