函數(影視版)
-
0:01 - 0:05現在讓我們談談這段時間
你們一直在使用的東西: -
0:05 - 0:06函數
-
0:06 - 0:10每當你使用指令時,像是
rect() 或 fill() 或 text() -
0:10 - 0:12你就在召喚函數
-
0:12 - 0:15而那些函數依照你的指令去繪圖
-
0:15 - 0:16函數到底是什麼?
-
0:16 - 0:20它是一連串我們集合起來
並給予名稱的程式碼 -
0:20 - 0:24因為我們想能夠多次地
重複使用哪一點功能 -
0:24 - 0:26想一想 rect()
rect() 做的是什麼? -
0:26 - 0:29它畫出四條線,對吧?
-
0:29 - 0:32我們也可用 line() 函數
做出相同的,是吧? -
0:32 - 0:34而我們也能得到一個貌似矩形的繪圖
-
0:34 - 0:36但是我們發現
-
0:36 - 0:39我們也想能夠多次繪畫矩形
-
0:39 - 0:43如果每次都要計算怎麼
從一個角落畫直線到另一個角落 -
0:43 - 0:45再從一個角落到另一個角落
就會變得很惱人 -
0:45 - 0:48與其那樣
我們不如寫一個 rect() 函數 -
0:48 - 0:51而該函數做的正正就是這
-
0:51 - 0:55跟那四行編碼做的一模一樣
只是所需的碼少很多 -
0:55 - 0:57那還蠻酷的
-
0:57 - 1:02而 rect() 是其中一個在可汗學院
所有學習課程中都可使用的函數 -
1:02 - 1:08但是,你也可以在你的程式裏
寫自己的函數 -
1:08 - 1:10例如:我們設計一個程式
-
1:10 - 1:14讓我們能多次繪製溫斯頓
-
1:14 - 1:17說不定說個有關他的生命故事
-
1:17 - 1:20然後展示出他人生裏的
每個年齡階段 -
1:20 - 1:24所以我們的溫斯頓繪製碼是可能是這樣:
-
1:24 - 1:27我們有 faceX 和 faceY 變數
-
1:27 - 1:29來儲存臉的中心位置
-
1:29 - 1:30然後我們畫上眼和嘴
-
1:30 - 1:33相對著那些變數
-
1:33 - 1:35現在程式可以看到編碼
-
1:35 - 1:38它不是在任何函數中
所以會直接執行 -
1:38 - 1:40而且只執行一次
-
1:40 - 1:43好的,把它變成一個函數
-
1:43 - 1:48這一步很似我們宣告變數的步驟
-
1:48 - 1:49因為其實那正是我們在做的
-
1:49 - 1:52所以我們寫 var drawWinston
-
1:52 - 1:54幫它取個好名字,高描述性
-
1:54 - 1:56然後一個 =
-
1:56 - 1:59但在這,我們不寫一個數字或一個字串
-
1:59 - 2:03而直接寫 function
確定你拼對 -
2:03 - 2:06之後一個空白括號 ()
-
2:06 - 2:08然後一個開花括號 {
-
2:08 - 2:10再一個關花括號 }
-
2:10 - 2:11和最後的分號 ;
-
2:11 - 2:15很好,我們需要做的是
將我們想要的所有東西 -
2:15 - 2:19放進函數的開和關花括號之間
-
2:19 - 2:22我們就把所有編碼放進去
-
2:22 - 2:26放它進我們的函數裏
排好內縮,然後 -
2:26 - 2:27噔噔!
-
2:27 - 2:29現在我們有的便是這變數
-
2:29 - 2:30它存着一個函數
-
2:30 - 2:34也就是說我們給了
這編碼區塊一個標籤 -
2:34 - 2:37以便我們於任何時間告訴我們的程式:
-
2:37 - 2:41嘿!找出那個有標籤的
編碼區塊然後執行它! -
2:41 - 2:44我們正令這編碼變得可再用
-
2:44 - 2:46但注意,我們現在沒有任何溫斯頓!
-
2:46 - 2:49我們丟了溫斯頓!
他跑了去哪裡? -
2:49 - 2:53好的,當我們放這於函數裏
-
2:53 - 2:56我們便告訴了程式:
嘿,這裡有一堆程式碼 -
2:56 - 2:58我想稍後能夠執行
-
2:58 - 3:01但只當我叫你去執行時才動手
-
3:01 - 3:04我們需告訴它去執行程式碼
-
3:04 - 3:06就是指我們需召喚函數
-
3:06 - 3:09就如我們執行ellipse() 和
rect() 和 line() 時一樣 -
3:09 - 3:14我們寫下函數名稱
drawWinston -
3:14 - 3:16隨後接上一個括號 ()
-
3:16 - 3:18當然還有分號 ;
-
3:18 - 3:19噔噔!
-
3:19 - 3:21我們有個溫斯頓了!
-
3:21 - 3:24好,我覺得它很酷
但你可能不覺它很酷 -
3:24 - 3:29因為我們做的一切
就是程式做它之前就會做的 -
3:29 - 3:30有點好笑吧?
-
3:30 - 3:33函數的用意就在於重複使用
-
3:33 - 3:35現在就來試試
-
3:35 - 3:38我們可以復製貼上這函數召喚
-
3:38 - 3:41噔噔!噔噔!
一遍又一遍地 -
3:41 - 3:44嗯,但看起來好像一樣
-
3:44 - 3:46喔,成功了
-
3:46 - 3:48它繪出了許多溫斯頓
-
3:48 - 3:51但問題是它們全在同一個地方
-
3:51 - 3:54如果我們有X光眼的話
就是可以看穿畫布 -
3:54 - 3:56看見三個溫斯頓
-
3:56 - 4:00但我沒有X光眼
(我不知道你) -
4:00 - 4:03但是,我們可以對函數
做一些小小的改變 -
4:03 - 4:05讓它現身
-
4:05 - 4:09你看 faceX 和 faceY
它們永遠都是202 和 208 -
4:09 - 4:12我們可利用
函數 random() 來改變這 -
4:12 - 4:14要不 random() 從 50 到 350
-
4:14 - 4:17它便會隨機產生一個
於那兩數之間的數字 -
4:17 - 4:19我們可以在這做一樣的
-
4:19 - 4:22所以每當這函式被召喚時
-
4:22 - 4:23它便會產生這新的隨機數
-
4:23 - 4:27如果我們按 restart
我們便可得到隨機溫斯頓 -
4:27 - 4:28太厲害了!
-
4:30 - 4:31好,我覺得這很酷因爲
-
4:31 - 4:35如果我們沒有擺它在函式裏
原本該需要一大堆編碼來寫這 -
4:35 - 4:37本來會有三倍的程式碼
-
4:38 - 4:41不過目前仍然不是它用處的極致
-
4:41 - 4:43因爲我們大概不想要隨機溫斯頓
-
4:43 - 4:47我們也許想能夠放將溫斯頓
在螢幕上一個固定的地方 -
4:47 - 4:48所以請密切留意
-
4:48 - 4:52因爲我們將講解
如何傳遞參數給函數 -
4:52 - 4:54而你便能學會做那
Inez Ng edited Chinese, Traditional subtitles for Functions (Video Version) | ||
Inez Ng edited Chinese, Traditional subtitles for Functions (Video Version) | ||
Inez Ng edited Chinese, Traditional subtitles for Functions (Video Version) | ||
Inez Ng edited Chinese, Traditional subtitles for Functions (Video Version) | ||
Inez Ng edited Chinese, Traditional subtitles for Functions (Video Version) | ||
Inez Ng edited Chinese, Traditional subtitles for Functions (Video Version) | ||
Inez Ng edited Chinese, Traditional subtitles for Functions (Video Version) | ||
Inez Ng edited Chinese, Traditional subtitles for Functions (Video Version) |