Return to Video

神奇函數 (影音版)

  • 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:20
    var 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
    若要定義自訂函數
    則要避免使用神奇函數的名稱
Title:
神奇函數 (影音版)
Description:

本影片為互動編程實作影片講解剪輯,是為方便字幕製作與翻譯。更完整的影片目錄請見:https://www.khanacademy.org/cs/programming/

more » « less
Video Language:
English
Duration:
04:02

Chinese, Traditional subtitles

Revisions