[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:01.24,0:00:04.56,Default,,0000,0000,0000,,到目前為止 我們已經看到\N如何建立和存取陣列 Dialogue: 0,0:00:04.56,0:00:08.73,Default,,0000,0000,0000,,但是,就像變量一樣\N關於陣列,有件非常酷的事 Dialogue: 0,0:00:08.73,0:00:12.73,Default,,0000,0000,0000,,那就是,我們可以在程式運行時\N動態地改變迴圈 Dialogue: 0,0:00:13.21,0:00:15.67,Default,,0000,0000,0000,,好,讓我為你解釋我剛才所說的 Dialogue: 0,0:00:16.37,0:00:20.68,Default,,0000,0000,0000,,畫面上的程式顯示霍伯拿著氣球\N超可愛的 Dialogue: 0,0:00:21.56,0:00:25.41,Default,,0000,0000,0000,,它的工作原理是\N我們有這個 xPositions 陣列 Dialogue: 0,0:00:25.41,0:00:30.01,Default,,0000,0000,0000,,裡面有兩個數字 可指定在哪裡放氣球 Dialogue: 0,0:00:30.01,0:00:32.33,Default,,0000,0000,0000,,再往下這裡 我們有個迴圈 Dialogue: 0,0:00:32.33,0:00:35.54,Default,,0000,0000,0000,,而這迴圈會處理陣列中每個元素 Dialogue: 0,0:00:35.54,0:00:40.47,Default,,0000,0000,0000,,它從每個 “×” 點 繪製一條線到霍伯的手中\N Dialogue: 0,0:00:40.47,0:00:47.43,Default,,0000,0000,0000,,然後在 “×” 為30X40像素的地方畫一個橢圓\N就是我們的氣球 Dialogue: 0,0:00:47.43,0:00:51.42,Default,,0000,0000,0000,,好 現在我們看看它是如何運作的 Dialogue: 0,0:00:51.42,0:00:54.24,Default,,0000,0000,0000,,我們知道 如果想要有另一個氣球 Dialogue: 0,0:00:54.24,0:00:58.58,Default,,0000,0000,0000,,只要添加一個數字到這個陣列 \N對不對?像是輸入300 Dialogue: 0,0:00:58.58,0:01:03.12,Default,,0000,0000,0000,,帥! 快樂的霍伯現在有三個氣球了 Dialogue: 0,0:01:03.12,0:01:10.74,Default,,0000,0000,0000,,但是 我們想讓不會寫程式的用戶 \N有寫程式的能力 來增加新的氣球 Dialogue: 0,0:01:10.74,0:01:13.34,Default,,0000,0000,0000,,所以 我們想把程式給一個用戶 Dialogue: 0,0:01:13.34,0:01:17.41,Default,,0000,0000,0000,,然後說:「你可以在任何你想要的地方點擊\N然後就會顯示氣球。」 Dialogue: 0,0:01:17.92,0:01:20.67,Default,,0000,0000,0000,,那不是很酷嗎?\N我覺得挺酷的 Dialogue: 0,0:01:20.67,0:01:23.26,Default,,0000,0000,0000,,那麼...我們應該怎麼做呢? Dialogue: 0,0:01:23.93,0:01:26.32,Default,,0000,0000,0000,,我們希望程式可隨時間變化 對不對? Dialogue: 0,0:01:26.32,0:01:30.60,Default,,0000,0000,0000,,用戶點擊哪裡 氣球就會出現在哪裡 Dialogue: 0,0:01:30.60,0:01:35.10,Default,,0000,0000,0000,,因此 讓我們把所有東西移動至一個\N繪製函數 draw function 裡面 Dialogue: 0,0:01:35.10,0:01:38.43,Default,,0000,0000,0000,,程式就可以隨時改變 Dialogue: 0,0:01:38.43,0:01:43.07,Default,,0000,0000,0000,,把這個移到這裡 這裡縮進一點\N好,完成 Dialogue: 0,0:01:43.10,0:01:48.36,Default,,0000,0000,0000,,現在 我們要檢查 \N用戶正在按下滑鼠嗎? Dialogue: 0,0:01:48.36,0:01:50.86,Default,,0000,0000,0000,,我們可以用 「if 」做檢查 Dialogue: 0,0:01:50.86,0:01:56.75,Default,,0000,0000,0000,,如果用戶按下滑鼠 那麼 我們就要做一些事\N那要做什麼呢? Dialogue: 0,0:01:56.75,0:02:01.69,Default,,0000,0000,0000,,如果滑鼠被按下\N那麼我們添加一個數字到陣列 Dialogue: 0,0:02:01.69,0:02:04.52,Default,,0000,0000,0000,,讓我們再做一次這兩個元素 Dialogue: 0,0:02:04.52,0:02:08.26,Default,,0000,0000,0000,,如果要在這個陣列添加一個數字 Dialogue: 0,0:02:08.26,0:02:10.96,Default,,0000,0000,0000,,讓我來告訴你一個實用方法 Dialogue: 0,0:02:10.96,0:02:18.53,Default,,0000,0000,0000,,我們可以說 \NxPositions[2] = mouseX; Dialogue: 0,0:02:18.53,0:02:21.58,Default,,0000,0000,0000,,讓你看看這方法的效果 Dialogue: 0,0:02:22.16,0:02:26.51,Default,,0000,0000,0000,,點擊後,我有一個氣球了!\N為什麼會有這結果呢? Dialogue: 0,0:02:26.52,0:02:31.58,Default,,0000,0000,0000,,就是 xPositions [2] \N它說 找到這個陣列 Dialogue: 0,0:02:31.58,0:02:34.54,Default,,0000,0000,0000,,並找到陣列在 [2] 地方的元素 Dialogue: 0,0:02:34.54,0:02:38.21,Default,,0000,0000,0000,,記得 [2] 是第三個元素\N因為陣列是從零開始的 Dialogue: 0,0:02:38.21,0:02:41.90,Default,,0000,0000,0000,,你看看 沒有第三個元素 對不對?\N那裏沒有東西 Dialogue: 0,0:02:41.90,0:02:45.63,Default,,0000,0000,0000,,所以說找出 [2] \N然後把 mouseX 放在那裡 Dialogue: 0,0:02:45.63,0:02:47.85,Default,,0000,0000,0000,,因為那裡什麼也沒有\N Dialogue: 0,0:02:47.85,0:02:51.29,Default,,0000,0000,0000,,所以它從沒有任何東西 到變成 mouseX Dialogue: 0,0:02:51.29,0:02:54.66,Default,,0000,0000,0000,,所以現在陣列有三個元素 Dialogue: 0,0:02:54.66,0:03:00.50,Default,,0000,0000,0000,,這下面的「 for」 迴圈處理它\N然後畫出第三個氣球 Dialogue: 0,0:03:00.50,0:03:03.94,Default,,0000,0000,0000,,所以真的很酷 \N讓我多點擊一些 看看它有什麼作用 Dialogue: 0,0:03:03.94,0:03:05.91,Default,,0000,0000,0000,,你看我每點擊一次 Dialogue: 0,0:03:06.46,0:03:11.42,Default,,0000,0000,0000,,無論我點擊哪裡 它就繪製第三個氣球\N Dialogue: 0,0:03:11.42,0:03:18.78,Default,,0000,0000,0000,,這是因為我們不斷覆蓋 [2] \N索引指標為2的元素\N Dialogue: 0,0:03:18.78,0:03:23.14,Default,,0000,0000,0000,,我們不斷用當前的 mouseX 覆蓋那點 Dialogue: 0,0:03:23.14,0:03:26.09,Default,,0000,0000,0000,,因此我們只能有三個氣球\N Dialogue: 0,0:03:26.09,0:03:29.56,Default,,0000,0000,0000,,因為我們在 [0] 點有了這個氣球 \N在 [1] 點有了這個氣球 Dialogue: 0,0:03:29.56,0:03:34.64,Default,,0000,0000,0000,,我們正在不斷地改變 [2] 的元素 懂嗎? Dialogue: 0,0:03:34.64,0:03:37.24,Default,,0000,0000,0000,,酷雖酷 但我們真正想要的是 Dialogue: 0,0:03:37.24,0:03:40.34,Default,,0000,0000,0000,,我們想要讓用戶作出好多個氣球 \N對不對? Dialogue: 0,0:03:40.34,0:03:43.54,Default,,0000,0000,0000,,讓用戶每次點擊的時候 就出現新氣球 Dialogue: 0,0:03:43.54,0:03:46.31,Default,,0000,0000,0000,,這意味著我們需要不斷地遞增 Dialogue: 0,0:03:46.31,0:03:50.69,Default,,0000,0000,0000,,存進去的陣列元素的索引數值 Dialogue: 0,0:03:50.69,0:03:53.51,Default,,0000,0000,0000,,我們不希望索引數值每次都是2 \N我們希望它是2 然後3 Dialogue: 0,0:03:53.51,0:03:56.34,Default,,0000,0000,0000,,然後4 然後5 然後6 等等 Dialogue: 0,0:03:56.34,0:03:59.19,Default,,0000,0000,0000,,我們可以用一個 \N計數器變量 counter variable 來達成 Dialogue: 0,0:03:59.19,0:04:00.94,Default,,0000,0000,0000,,我們說 \NnewInd = 2; Dialogue: 0,0:04:00.94,0:04:02.75,Default,,0000,0000,0000,,2 就是它在開始時的數值 Dialogue: 0,0:04:02.75,0:04:05.71,Default,,0000,0000,0000,,然後在這裡我們會說 newInd 而不是2 Dialogue: 0,0:04:05.71,0:04:09.56,Default,,0000,0000,0000,,然後 我們真正想做的是\NnewInd ++ Dialogue: 0,0:04:09.56,0:04:11.78,Default,,0000,0000,0000,,這樣每次 newInd 會增加1 Dialogue: 0,0:04:11.78,0:04:15.30,Default,,0000,0000,0000,,因此 它開始為2\N進而成為3 然後變成4 Dialogue: 0,0:04:15.30,0:04:18.43,Default,,0000,0000,0000,,每次滑鼠按下時 它會增加變大 \N讓我們試試看 Dialogue: 0,0:04:18.43,0:04:22.23,Default,,0000,0000,0000,,噹噹!好多氣球啊 氣球派對 嗚~! Dialogue: 0,0:04:22.23,0:04:24.76,Default,,0000,0000,0000,,這很酷 對不對? Dialogue: 0,0:04:24.76,0:04:27.37,Default,,0000,0000,0000,,但是 這不是最佳做法 Dialogue: 0,0:04:27.37,0:04:29.95,Default,,0000,0000,0000,,因為實際上 把陣列元素變多 Dialogue: 0,0:04:29.95,0:04:32.23,Default,,0000,0000,0000,,其實很費工 Dialogue: 0,0:04:32.23,0:04:35.40,Default,,0000,0000,0000,,因此 有個更簡單的方法能做出上述效果 Dialogue: 0,0:04:35.40,0:04:38.94,Default,,0000,0000,0000,,讓我直接刪除剛剛做的東西 \N Dialogue: 0,0:04:38.94,0:04:42.94,Default,,0000,0000,0000,,我們不需要那個 也不需要那個 \N把那些都刪掉 Dialogue: 0,0:04:42.94,0:04:48.30,Default,,0000,0000,0000,,好 我們的方法是 \NxPositions.push Dialogue: 0,0:04:48.30,0:04:50.98,Default,,0000,0000,0000,,然後括號mouseX Dialogue: 0,0:04:50.98,0:04:52.84,Default,,0000,0000,0000,,在這裡所做的是 Dialogue: 0,0:04:52.84,0:04:56.32,Default,,0000,0000,0000,,我們以一種方式呼叫 xPositions 陣列 Dialogue: 0,0:04:56.32,0:04:58.36,Default,,0000,0000,0000,,我們在陣列上呼叫一個命令 Dialogue: 0,0:04:58.36,0:05:02.47,Default,,0000,0000,0000,,命令陣列:\N「推動 mouseX 這個新的值... Dialogue: 0,0:05:02.47,0:05:05.49,Default,,0000,0000,0000,,把它推到你陣列的尾端。」 Dialogue: 0,0:05:05.49,0:05:09.20,Default,,0000,0000,0000,,每當這個被呼叫時 每次滑鼠被按下時 Dialogue: 0,0:05:09.20,0:05:12.54,Default,,0000,0000,0000,,它會看看 mouseX \N並將其推入陣列的尾端 Dialogue: 0,0:05:12.54,0:05:15.33,Default,,0000,0000,0000,,因此 陣列就會變得越來越大 Dialogue: 0,0:05:15.33,0:05:17.02,Default,,0000,0000,0000,,因此 讓我們重新測試 Dialogue: 0,0:05:17.51,0:05:19.39,Default,,0000,0000,0000,,噹噹 行了! Dialogue: 0,0:05:19.39,0:05:22.97,Default,,0000,0000,0000,,而且使用更少的編碼 對嗎? Dialogue: 0,0:05:22.98,0:05:25.26,Default,,0000,0000,0000,,所以 如果你想要添加東西到陣列\N Dialogue: 0,0:05:25.26,0:05:27.27,Default,,0000,0000,0000,,多數時間 你會想要使用 push\N Dialogue: 0,0:05:27.27,0:05:31.89,Default,,0000,0000,0000,,它非常簡潔 因為可以讓陣列越變越大 Dialogue: 0,0:05:31.90,0:05:35.43,Default,,0000,0000,0000,,就像你有一個動畫 \N當用戶做東西時 你可以做更多的東西 Dialogue: 0,0:05:36.42,0:05:41.64,Default,,0000,0000,0000,,現在 你已經見到\N90%可能會使用陣列的目的和方式 Dialogue: 0,0:05:41.65,0:05:43.85,Default,,0000,0000,0000,,但陣列還可以做更多事 Dialogue: 0,0:05:43.85,0:05:47.17,Default,,0000,0000,0000,,如果您有任何疑問 請在討論時發問 Dialogue: 0,0:05:47.17,0:05:49.72,Default,,0000,0000,0000,,首先必須徹底了解這些基礎知識