神奇函數 (影音版)
-
0:01 - 0:03大家應該發現了
-
0:03 - 0:06製作動畫時一定會用到一個函數
-
0:06 - 0:09就是繪製函數(draw)
-
0:09 - 0:13用汽車動畫程式來複習一下吧
-
0:13 - 0:18還記得嗎
var x = 11代表汽車的起始位置 -
0:18 - 0:20var draw函數包含所有繪圖程式碼
-
0:20 - 0:23若將起始位置X的值
設為每次遞增3 -
0:23 - 0:28汽車就能反覆來回
(汽車引擎擬聲) -
0:28 - 0:31各位學了如何編寫函數
-
0:31 - 0:34但可能對繪製函數(draw function)
有些疑惑 -
0:34 - 0:37是特別撰寫的嗎?
為何都以draw命名? -
0:38 - 0:40問得好
-
0:40 - 0:43是這樣的,在可汗學院的平臺
-
0:43 - 0:48有些特別的總體函數,
我姑且稱為神奇函數 -
0:48 - 0:50不過這只是我自己取的名字
-
0:50 - 0:53基本上各位在平臺上執行程式時
-
0:53 - 0:56若有某些特定名稱的函數
像是繪製(draw) -
0:56 - 1:00那平台會在特定時間呼叫函數
-
1:00 - 1:03例如在程式碼定義繪製函數時
-
1:03 - 1:07平台會找到該函數
並讀取內部程式碼 -
1:07 - 1:12程式就會以最快的速度
反覆呼叫那段程式碼 -
1:12 - 1:16但繪製函數若未定義
程式就無法呼叫 -
1:16 - 1:18因為找不到定義的內容
-
1:18 - 1:23也就是說若將繪製函數
draw改成drow -
1:23 - 1:26程式就無法運行
-
1:26 - 1:29換成drawCar也是動不了
-
1:29 - 1:33程式會找不到更名後的函數
-
1:33 - 1:35因為函數已經不叫繪製(draw)
-
1:35 - 1:37程式自然不會執行對應的程式碼
-
1:37 - 1:39當然什麼也不會發生
-
1:40 - 1:43所以不要將自定函數命名為draw
-
1:43 - 1:45除非要特別處理該項函數
-
1:45 - 1:48讓程式反覆呼叫
-
1:49 - 1:52繪製函數並非唯一的神奇函數
-
1:52 - 1:55還有很多函數負責處理
-
1:55 - 1:59滑鼠和鍵盤輸入
-
1:59 - 2:03我們來看另一個動畫程式
-
2:03 - 2:07假設我們想繪製彩色球體
-
2:07 - 2:14滑鼠移動時就要畫
-
2:14 - 2:17假設已有繪製(draw)、填色(fill)函數
-
2:17 - 2:20然後在(mouseX, mouseY, 10, 10)
執行橢圓形(ellipse)函數 -
2:20 - 2:21試一下,很好!
-
2:21 - 2:25彩球反覆產生,很酷
-
2:25 - 2:28繪製函數內的程式碼
-
2:28 - 2:30會不斷被程式呼叫
-
2:30 - 2:34就因為程式碼位於繪製函數內
-
2:34 - 2:36即使滑鼠不動,程式也會執行
-
2:36 - 2:41就像現在這樣,滑鼠根本沒動
程式還是不斷執行 -
2:41 - 2:45不過事實上有更好的方法
-
2:45 - 2:47做起來會更有效率
-
2:47 - 2:53可將繪製(draw)函數
改成移動滑鼠函數(mouseMoved) -
2:54 - 2:57可汗學院平台會自動偵測程式
-
2:57 - 3:00確認mouseMoved已經定義
-
3:00 - 3:03若已定義
只要滑鼠移動就會呼叫函數 -
3:03 - 3:06再看一次,繪圖功能正常
-
3:07 - 3:10但不移動滑鼠,就不會呼叫函數
-
3:10 - 3:15滑鼠靜止,函數就不會反應
-
3:15 - 3:18之前函數命名為繪製(draw)時
-
3:18 - 3:22即使滑鼠沒動作
也會反覆呼叫程式碼 -
3:22 - 3:23但改名為移動滑鼠後
-
3:23 - 3:27只有在需要時才會呼叫程式
也就是移動滑鼠時 -
3:27 - 3:29程式效率因此提升
-
3:30 - 3:34若希望程式
只在移動滑鼠時輸出結果 -
3:34 - 3:37移動滑鼠(mouseMoved)函數
-
3:37 - 3:40會比繪圖函數(draw)更好
-
3:40 - 3:43還有很多神奇函數
-
3:44 - 3:47如滑鼠按鍵是否按下(mouseIsPressed)
放開滑鼠(mouseReleased)按下按鍵(keyPressed) -
3:47 - 3:50我們的官方文件都有說明
-
3:50 - 3:54重點是使用神奇函數時
-
3:54 - 3:56拼字務必正確
-
3:56 - 4:00若要定義自訂函數
則要避免使用神奇函數的名稱
chen_kel edited Chinese, Traditional subtitles for Magic Functions (Video Version) | ||
chen_kel edited Chinese, Traditional subtitles for Magic Functions (Video Version) | ||
Samson Zhong edited Chinese, Traditional subtitles for Magic Functions (Video Version) | ||
Samson Zhong edited Chinese, Traditional subtitles for Magic Functions (Video Version) | ||
Samson Zhong edited Chinese, Traditional subtitles for Magic Functions (Video Version) | ||
Samson Zhong edited Chinese, Traditional subtitles for Magic Functions (Video Version) | ||
Samson Zhong edited Chinese, Traditional subtitles for Magic Functions (Video Version) | ||
Samson Zhong edited Chinese, Traditional subtitles for Magic Functions (Video Version) |