[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.88,0:00:06.00,Default,,0000,0000,0000,,我們又回到「繪製溫斯頓」這個程式了\N但我加了一些文字 Dialogue: 0,0:00:06.00,0:00:11.07,Default,,0000,0000,0000,,看,我想做的就是\N放一個溫斯頓在每一個標籤下面 Dialogue: 0,0:00:11.07,0:00:13.04,Default,,0000,0000,0000,,來顯示他不同的人生階段 Dialogue: 0,0:00:13.04,0:00:15.17,Default,,0000,0000,0000,,現在他在螢幕上到處亂竄 Dialogue: 0,0:00:15.17,0:00:20.36,Default,,0000,0000,0000,,這是因為我們把這函數裡的\NfaceX 和 faceY 設成隨機數 Dialogue: 0,0:00:20.36,0:00:26.71,Default,,0000,0000,0000,,但是我們要做的是「嘿,這就是\N我想你把這溫斯頓畫到的指定位置。」 Dialogue: 0,0:00:26.71,0:00:30.34,Default,,0000,0000,0000,,我想每次召喚函數的時候\N都能準確說明它的位置 Dialogue: 0,0:00:30.34,0:00:33.73,Default,,0000,0000,0000,,就像我們設定 \Nellipse() 和 rect() 的時候一樣 Dialogue: 0,0:00:33.74,0:00:40.11,Default,,0000,0000,0000,,我想放溫斯頓在這裡、這裡、一個\N溫斯頓在這裡、一個溫斯頓在這裡 Dialogue: 0,0:00:40.11,0:00:44.44,Default,,0000,0000,0000,,我不想每次召喚函數的時候\N溫斯頓隨機亂跑 Dialogue: 0,0:00:44.64,0:00:49.17,Default,,0000,0000,0000,,要做到這一點\N我們需要指定函數裡的參數 Dialogue: 0,0:00:49.17,0:00:52.83,Default,,0000,0000,0000,,既要在函式定義裡設置參數\N頂部這裡 Dialogue: 0,0:00:52.83,0:00:57.30,Default,,0000,0000,0000,,也要在召喚函數裡設置參數\N下面這裡 Dialogue: 0,0:00:57.30,0:01:02.81,Default,,0000,0000,0000,,在 drawWinston() 裏\N我們給它傳遞 faceX 和 faceY Dialogue: 0,0:01:02.81,0:01:10.11,Default,,0000,0000,0000,,讓該函數使用我們傳遞的值\N而不是使用隨機產生的值 Dialogue: 0,0:01:10.43,0:01:14.66,Default,,0000,0000,0000,,我們先想想要在下方的函數召喚\N傳遞什麼數值 Dialogue: 0,0:01:14.66,0:01:17.66,Default,,0000,0000,0000,,我們想要把溫斯頓放在每行文字下面 Dialogue: 0,0:01:17.66,0:01:24.49,Default,,0000,0000,0000,,所以我們該想要每個溫斯頓的 x 跟 y \N跟 text() 的座標非常相近 Dialogue: 0,0:01:24.49,0:01:28.24,Default,,0000,0000,0000,,可能溫斯頓的 y\N比文字的低10個像素左右 Dialogue: 0,0:01:28.48,0:01:40.89,Default,,0000,0000,0000,,那第一個的就是 10, 30\N然後 200, 230 ... 10, 230 ... 200, 230 Dialogue: 0,0:01:40.89,0:01:44.86,Default,,0000,0000,0000,,跟文字座標是一樣的\N只是每一個 y 我都加了10 Dialogue: 0,0:01:44.86,0:01:48.14,Default,,0000,0000,0000,,因為我只想它低一點點 Dialogue: 0,0:01:49.98,0:01:51.59,Default,,0000,0000,0000,,但溫斯頓沒有動\N Dialogue: 0,0:01:51.59,0:01:57.12,Default,,0000,0000,0000,,這是因爲我們沒有告訴上面的函數\N我們正傳遞它參數 Dialogue: 0,0:01:57.12,0:01:59.93,Default,,0000,0000,0000,,所以它還在用這些隨機值 Dialogue: 0,0:01:59.93,0:02:03.60,Default,,0000,0000,0000,,為了告訴這些函數「我們要給你這些資訊啦」 Dialogue: 0,0:02:03.60,0:02:08.40,Default,,0000,0000,0000,,我們須在這些括弧裡輸入參數的名稱 Dialogue: 0,0:02:08.40,0:02:14.82,Default,,0000,0000,0000,,我們將其命名為 faceX 和 face Y\N用逗號隔開 Dialogue: 0,0:02:14.82,0:02:21.09,Default,,0000,0000,0000,,這樣命名是因為在該函數裡面\N我們已經用了這些名字 Dialogue: 0,0:02:21.09,0:02:24.56,Default,,0000,0000,0000,,這樣我們就不用重寫其餘的程式碼了 Dialogue: 0,0:02:25.11,0:02:28.81,Default,,0000,0000,0000,,但是仍然什麼都沒有發生\N溫斯頓還是周圍亂跑 Dialogue: 0,0:02:28.81,0:02:31.35,Default,,0000,0000,0000,,如果你看看我們頂部的函數 Dialogue: 0,0:02:31.35,0:02:35.53,Default,,0000,0000,0000,,你會發現隨機值\N還是覆蓋在 faceX 和 faceY 上 Dialogue: 0,0:02:35.94,0:02:39.89,Default,,0000,0000,0000,,所以我們要做的\N就是把這兩行都刪掉 Dialogue: 0,0:02:39.89,0:02:46.24,Default,,0000,0000,0000,,噔噔!現在 faceX 和 faceY 傳到函數裡了 Dialogue: 0,0:02:46.24,0:02:49.58,Default,,0000,0000,0000,,而且使用我們在下面召喚的值 Dialogue: 0,0:02:49.58,0:02:53.91,Default,,0000,0000,0000,,但是如你所見,溫斯頓擺放的位置不是很正確 Dialogue: 0,0:02:53.91,0:03:01.83,Default,,0000,0000,0000,,因為我忘記了文字是左對齊\N臉則是居中 Dialogue: 0,0:03:01.83,0:03:06.38,Default,,0000,0000,0000,,所以我只需要修改一下我的數字,對吧? Dialogue: 0,0:03:06.38,0:03:12.44,Default,,0000,0000,0000,,我要把 x 右移很多, y 下移一點\N好了,小孩溫斯頓弄好了 Dialogue: 0,0:03:12.44,0:03:14.59,Default,,0000,0000,0000,,繼續修改 Dialogue: 0,0:03:14.59,0:03:22.52,Default,,0000,0000,0000,,現在只要修改一下函數的參數值即可\N完全不用修改函數定義 Dialogue: 0,0:03:22.52,0:03:26.44,Default,,0000,0000,0000,,它會使用我們傳給它的任何值 Dialogue: 0,0:03:26.44,0:03:28.52,Default,,0000,0000,0000,,就像製作 ellipse() 和 rect() 時一樣 Dialogue: 0,0:03:28.52,0:03:33.35,Default,,0000,0000,0000,,我已經差不多擺放好了\N但我發現溫斯頓有點大 Dialogue: 0,0:03:33.35,0:03:35.76,Default,,0000,0000,0000,,他正重疊在一起\N他的大小不大對勁 Dialogue: 0,0:03:35.76,0:03:39.17,Default,,0000,0000,0000,,由於我放了畫出溫斯頓的程式碼\N在一個函數裏 Dialogue: 0,0:03:39.17,0:03:42.37,Default,,0000,0000,0000,,我能夠一次改變全部的大小 Dialogue: 0,0:03:42.37,0:03:45.51,Default,,0000,0000,0000,,只要修改這行畫橢圓的程式碼即可 Dialogue: 0,0:03:45.51,0:03:50.63,Default,,0000,0000,0000,,讓我們將他改成 190 \N耶,溫斯頓減肥了!和 190 Dialogue: 0,0:03:50.63,0:03:55.42,Default,,0000,0000,0000,,現在他的大小合適了\N然後,我還可以微調一下 Dialogue: 0,0:03:55.42,0:03:59.39,Default,,0000,0000,0000,,這樣我就能把他放進去了是不是? Dialogue: 0,0:04:01.06,0:04:02.29,Default,,0000,0000,0000,,酷! Dialogue: 0,0:04:02.98,0:04:06.18,Default,,0000,0000,0000,,讓我們來回顧下這程式碼的功能\N Dialogue: 0,0:04:06.18,0:04:09.25,Default,,0000,0000,0000,,它定義了一個叫做 drawWinston() 的函數 Dialogue: 0,0:04:09.25,0:04:14.67,Default,,0000,0000,0000,,這函數有兩個值\N標名為 faceX 和 faceY Dialogue: 0,0:04:14.67,0:04:19.95,Default,,0000,0000,0000,,實際上這兩值就是變數\N我們可在函數裏任何地方使用它們 Dialogue: 0,0:04:19.95,0:04:24.24,Default,,0000,0000,0000,,就像我們以前用於\N宣告在頂部的變數一樣 Dialogue: 0,0:04:25.12,0:04:29.11,Default,,0000,0000,0000,,宣告了之後便可隨時召喚這函數 Dialogue: 0,0:04:29.11,0:04:34.05,Default,,0000,0000,0000,,我們可以傳遞不同的值\N而函數便會使用這些新的值 Dialogue: 0,0:04:34.74,0:04:37.26,Default,,0000,0000,0000,,你見證了這些函數的神奇效應 Dialogue: 0,0:04:37.26,0:04:40.81,Default,,0000,0000,0000,,我們可以設計一些\N我們覺得好用的程式碼來重複使用 Dialogue: 0,0:04:40.81,0:04:42.74,Default,,0000,0000,0000,,但我們也可以利用參數來說\N Dialogue: 0,0:04:42.74,0:04:46.46,Default,,0000,0000,0000,,「嘿,你可以在這程式碼裏\N修飾一下這小東西。」 Dialogue: 0,0:04:46.46,0:04:49.40,Default,,0000,0000,0000,,就像一個菜譜,你寫下總體指令 Dialogue: 0,0:04:49.40,0:04:53.05,Default,,0000,0000,0000,,如果你突然發現你要餵飼的\N是四個溫斯頓而不只是一個 Dialogue: 0,0:04:53.05,0:04:56.25,Default,,0000,0000,0000,,你不用一切重新開始\N你只需要調整一下指令原文 Dialogue: 0,0:04:56.25,0:04:57.96,Default,,0000,0000,0000,,並把一切乘上4即可 Dialogue: 0,0:04:57.96,0:05:03.28,Default,,0000,0000,0000,,現在你可以開始創造自己的\N程式碼菜譜啦!真好吃!