[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:01.08,0:00:04.24,Default,,0000,0000,0000,,我們回到那顯示我的陣列 (array) 朋友的程式 Dialogue: 0,0:00:04.24,0:00:06.85,Default,,0000,0000,0000,,但是有一些事真的惹惱了我 Dialogue: 0,0:00:06.85,0:00:09.47,Default,,0000,0000,0000,,每次我添加一個新朋友到陣列中 都要補充 Dialogue: 0,0:00:09.47,0:00:11.40,Default,,0000,0000,0000,,一個新的文字命令 (text command) 到這裡 Dialogue: 0,0:00:11.40,0:00:13.23,Default,,0000,0000,0000,,假設我加了溫斯頓 Dialogue: 0,0:00:13.23,0:00:15.33,Default,,0000,0000,0000,,他不會自動顯示出來 Dialogue: 0,0:00:15.33,0:00:19.92,Default,,0000,0000,0000,,如果我要他露面 我得說 \Ntext(myFriends[3], Dialogue: 0,0:00:19.92,0:00:23.09,Default,,0000,0000,0000,,然後更改位置 y \N才可以看到溫斯頓 Dialogue: 0,0:00:23.09,0:00:24.98,Default,,0000,0000,0000,,這實在是很麻煩 Dialogue: 0,0:00:24.98,0:00:28.38,Default,,0000,0000,0000,,我希望每次加入別人到陣列時\N他都會自動顯示出來 Dialogue: 0,0:00:28.38,0:00:31.31,Default,,0000,0000,0000,,程式會自動做那個文字命令 Dialogue: 0,0:00:31.31,0:00:34.40,Default,,0000,0000,0000,,好了 還記得我們學過迴圈嗎? Dialogue: 0,0:00:34.40,0:00:38.55,Default,,0000,0000,0000,,迴圈是個偉大的方式\N可以多次重複相同的代碼 Dialogue: 0,0:00:38.55,0:00:43.31,Default,,0000,0000,0000,,就像 如果我們想要有連續的一堆樹木\N或一串氣球 Dialogue: 0,0:00:43.31,0:00:49.77,Default,,0000,0000,0000,,事實證明 迴圈也是陣列的元素上運行代碼中\N很棒的方式 Dialogue: 0,0:00:49.78,0:00:53.62,Default,,0000,0000,0000,,事實上 每次使用陣列時 你幾乎都會用到迴圈 Dialogue: 0,0:00:53.62,0:00:57.35,Default,,0000,0000,0000,,他們一起工作真的很配 Dialogue: 0,0:00:57.35,0:01:00.09,Default,,0000,0000,0000,,為了讓你明白我的意思\N我不用文字命令 Dialogue: 0,0:01:00.09,0:01:03.70,Default,,0000,0000,0000,,而是用一個迴圈\N來顯示我朋友名字 Dialogue: 0,0:01:03.70,0:01:07.68,Default,,0000,0000,0000,,我們將從三個問題開始\N當我們做迴圈時 總是會問自己 Dialogue: 0,0:01:07.68,0:01:10.99,Default,,0000,0000,0000,,首先 我想重複的是什麼? \N看過內容後,什麼是重複的? Dialogue: 0,0:01:10.99,0:01:13.04,Default,,0000,0000,0000,,就是文字命令 (text command) Dialogue: 0,0:01:13.04,0:01:16.56,Default,,0000,0000,0000,,我每次想改變什麼? \N就讓我看看有什麼不同 Dialogue: 0,0:01:16.56,0:01:20.00,Default,,0000,0000,0000,,位置 y 和當前的索引指數 (index) ,是吧? Dialogue: 0,0:01:20.00,0:01:25.61,Default,,0000,0000,0000,,就是 NUM 這位朋友和位置 y Dialogue: 0,0:01:25.61,0:01:28.14,Default,,0000,0000,0000,,那我們應該重複多久? \N Dialogue: 0,0:01:28.14,0:01:32.94,Default,,0000,0000,0000,,繼續下去 直到沒有其它朋友 Dialogue: 0,0:01:32.94,0:01:36.97,Default,,0000,0000,0000,,好 現在我們知道想要什麼\N可以做個迴圈 Dialogue: 0,0:01:36.97,0:01:40.52,Default,,0000,0000,0000,,我們從計數器變量 (counter variable) \N開始追蹤迴圈位置 Dialogue: 0,0:01:40.52,0:01:44.35,Default,,0000,0000,0000,,所以我們說 var friendNum = 0; Dialogue: 0,0:01:44.35,0:01:48.57,Default,,0000,0000,0000,,計數從零開始\N因為 0 是陣列中的第一個元素 Dialogue: 0,0:01:48.57,0:01:50.52,Default,,0000,0000,0000,,1 不是第一個元素 Dialogue: 0,0:01:50.52,0:01:57.85,Default,,0000,0000,0000,,我們有 while 迴圈 所以我們說\Nwhile(friendNum < my friends.length) Dialogue: 0,0:01:57.87,0:02:03.97,Default,,0000,0000,0000,,現在我們要比較\N當下計數器變量與陣列中元素的總數 Dialogue: 0,0:02:03.97,0:02:07.25,Default,,0000,0000,0000,,迴圈中 這裡是使用文字命令處 Dialogue: 0,0:02:07.25,0:02:09.18,Default,,0000,0000,0000,,我們說 text(myFriends[ Dialogue: 0,0:02:09.18,0:02:15.38,Default,,0000,0000,0000,,而這裡我們放 friendNum 不放數字 \N因為 friendNum 代表當前的數量\N Dialogue: 0,0:02:15.38,0:02:18.28,Default,,0000,0000,0000,,我們目前為止只放一個位置 y Dialogue: 0,0:02:18.28,0:02:22.09,Default,,0000,0000,0000,,OK 這給了我們一個無限迴圈的錯誤 \N Dialogue: 0,0:02:22.09,0:02:25.66,Default,,0000,0000,0000,,因為我們還沒有改變 friendNum Dialogue: 0,0:02:25.66,0:02:27.77,Default,,0000,0000,0000,,請記住 每次迴圈都需要遞增 friendNum Dialogue: 0,0:02:27.77,0:02:32.65,Default,,0000,0000,0000,,否則條件為真 迴圈會永遠繼續下去 Dialogue: 0,0:02:32.65,0:02:38.21,Default,,0000,0000,0000,,我看到某些事情發生了 \N讓我註釋掉舊代碼 看看發生了什麼事 Dialogue: 0,0:02:38.21,0:02:43.54,Default,,0000,0000,0000,,我們想現出所有的名字 但是他們都被蓋掉了 Dialogue: 0,0:02:43.54,0:02:45.26,Default,,0000,0000,0000,,因此 我們需要改變位置 y Dialogue: 0,0:02:45.26,0:02:49.80,Default,,0000,0000,0000,,讓我們就說 'friendNum*30'\N Dialogue: 0,0:02:49.80,0:02:52.29,Default,,0000,0000,0000,,這很好 但索菲亞關閉銀幕\N Dialogue: 0,0:02:52.29,0:02:55.43,Default,,0000,0000,0000,,索菲亞如果發現了這一點 她會很不高興 Dialogue: 0,0:02:55.43,0:02:59.65,Default,,0000,0000,0000,,那就讓我們加 30 \N現在全部都差距 30 Dialogue: 0,0:02:59.65,0:03:04.05,Default,,0000,0000,0000,,好棒!現在你看 我們有顯示陣列的迴圈 Dialogue: 0,0:03:04.05,0:03:09.12,Default,,0000,0000,0000,,這意味著如果我們增加更多的人\N像是蓋伊 或者是薩爾 Sal Dialogue: 0,0:03:09.12,0:03:11.74,Default,,0000,0000,0000,,如果我只加 薩爾 Sal 到陣列\N薩爾他會成為我的朋友 Dialogue: 0,0:03:11.74,0:03:13.70,Default,,0000,0000,0000,,真棒!現在 他是我哥們了 Dialogue: 0,0:03:13.70,0:03:18.28,Default,,0000,0000,0000,,呃... 你可以看到 新朋友是自動顯示 Dialogue: 0,0:03:18.28,0:03:20.89,Default,,0000,0000,0000,,因為它始終排在陣列裡\N Dialogue: 0,0:03:20.89,0:03:24.30,Default,,0000,0000,0000,,我們可以刪除舊代碼\N因為不再需要它 Dialogue: 0,0:03:24.30,0:03:28.57,Default,,0000,0000,0000,,我們檢視整個代碼 並查看它是在做什麼 Dialogue: 0,0:03:28.57,0:03:31.44,Default,,0000,0000,0000,,我們從 friendNum 等於零開始 Dialogue: 0,0:03:31.46,0:03:34.35,Default,,0000,0000,0000,,我們檢查看看 friendNum 是否小於當前長度 Dialogue: 0,0:03:34.35,0:03:37.71,Default,,0000,0000,0000,,你可以想像 0 比 6 小 確實如此 Dialogue: 0,0:03:37.71,0:03:41.94,Default,,0000,0000,0000,,於是 我們從這裡進去 \N我們說 我的朋友 friendNum Dialogue: 0,0:03:41.94,0:03:44.62,Default,,0000,0000,0000,,所以這將是我的第零個朋友 第一次 Dialogue: 0,0:03:44.62,0:03:47.59,Default,,0000,0000,0000,,然後 30 加上 0 乘以 30 Dialogue: 0,0:03:47.59,0:03:53.75,Default,,0000,0000,0000,,它顯示索菲亞在位置 10 和 30 上\N就是這樣的 Dialogue: 0,0:03:53.77,0:03:56.55,Default,,0000,0000,0000,,然後用 friendNum ++\N於是 friendNum 就變成 1 Dialogue: 0,0:03:56.55,0:03:59.22,Default,,0000,0000,0000,,然後它返回說:\N1 比 myfriends.length 的長度小嗎? Dialogue: 0,0:03:59.22,0:04:00.04,Default,,0000,0000,0000,,是啊 沒錯 Dialogue: 0,0:04:00.04,0:04:02.01,Default,,0000,0000,0000,,迴圈這樣一直保持下去... Dialogue: 0,0:04:02.01,0:04:07.45,Default,,0000,0000,0000,,最後我們來到薩爾\N記住 薩爾在陣列中其實是第六元素 Dialogue: 0,0:04:07.45,0:04:11.05,Default,,0000,0000,0000,,但他的索引指數 (index) 是 5 \N因為指數從零開始 Dialogue: 0,0:04:11.05,0:04:13.80,Default,,0000,0000,0000,,那麼 5 比 6 小?是 Dialogue: 0,0:04:13.80,0:04:16.03,Default,,0000,0000,0000,,因此 顯示 myfriends 等於 5 Dialogue: 0,0:04:16.03,0:04:20.22,Default,,0000,0000,0000,,然後 它變成 6 \N我們問 6 比 6 小嗎? Dialogue: 0,0:04:20.24,0:04:23.17,Default,,0000,0000,0000,,錯! 6 等於 6\N因此這是錯誤的 Dialogue: 0,0:04:23.17,0:04:25.61,Default,,0000,0000,0000,,因此 它永遠不會顯示第六個元素 Dialogue: 0,0:04:25.61,0:04:29.81,Default,,0000,0000,0000,,這很好 因為指數 6 沒有任何人 Dialogue: 0,0:04:29.81,0:04:33.33,Default,,0000,0000,0000,,有第六元素 但沒有人在指數六 Dialogue: 0,0:04:33.33,0:04:37.01,Default,,0000,0000,0000,,這可能令人混淆 他是 0 也是 1 Dialogue: 0,0:04:37.01,0:04:40.07,Default,,0000,0000,0000,,但你終究會領悟的 Dialogue: 0,0:04:40.07,0:04:42.18,Default,,0000,0000,0000,,好吧 這就是我們的迴圈 Dialogue: 0,0:04:42.20,0:04:45.23,Default,,0000,0000,0000,,現在 如果你願意嘗試使用迴圈\N可使用 for 迴圈 Dialogue: 0,0:04:45.23,0:04:46.66,Default,,0000,0000,0000,,前提是你想從 for 迴圈開始嘗試 Dialogue: 0,0:04:46.66,0:04:52.56,Default,,0000,0000,0000,,有關 for 迴圈 我們說 \Nfor var friendNum = 0; Dialogue: 0,0:04:52.56,0:04:57.95,Default,,0000,0000,0000,,然後有\NfriendNum < myFriends.length 這個條件 Dialogue: 0,0:04:57.95,0:05:01.59,Default,,0000,0000,0000,,然後我們增量:friendNum ++ Dialogue: 0,0:05:01.59,0:05:06.77,Default,,0000,0000,0000,,for 迴圈中 我們可以把剛才那行代碼放在這裡 Dialogue: 0,0:05:06.77,0:05:12.66,Default,,0000,0000,0000,,我只是改變 x \N可以看到 for 迴圈是完全一樣的東西 Dialogue: 0,0:05:12.66,0:05:17.09,Default,,0000,0000,0000,,取決於你使用哪一種迴圈 \N重點是 把迴圈用於陣列 Dialogue: 0,0:05:17.09,0:05:19.28,Default,,0000,0000,0000,,因為它會讓你變得很厲害