魔法函数(视频版)
-
0:01 - 0:03此时,你可能已经意识到
-
0:03 - 0:08每次你想制作一个动画程序的时候,
都会用到一个特别的函数, -
0:08 - 0:09那就是“draw”(画画)函数。
-
0:10 - 0:12提醒一下大家,
这是我们的汽车动画程序。 -
0:14 - 0:17记住我们已经输入了"var x=11"
(给x赋值11)语句, -
0:17 - 0:18——这是汽车的起始位置,
-
0:18 - 0:20然后限定 “var draw” 函数,
然后写下所有画汽车的代码, -
0:20 - 0:23然后我们改变X的值,X每次增加3,
-
0:23 - 0:28那汽车就可以启动了!
哇!轰隆轰隆轰隆! -
0:28 - 0:31现在你已经学会如何制作自己的函数了,
-
0:31 - 0:34你可能会开始想,
“这个‘draw’(画画)函数是什么东西?” -
0:34 - 0:37“这是一个自定义函数吗?
为什么总是把它命名为‘draw’? ” -
0:38 - 0:40嗯,这些都是很好的问题。
-
0:40 - 0:43你看,在我们可汗学院的运行环境中,
-
0:43 - 0:47有几个非常特别的全局函数,
我把它们称为“魔法函数”, -
0:48 - 0:50但那只是我自己给它们起的名字。
-
0:51 - 0:53基本上,当我们运行你写的程序的时候,
-
0:53 - 0:56我们会先看你有没有用一些特定的名字
定义函数,例如“draw”(画画), -
0:56 - 1:00如果你有用这些名字的话,
我们会在特定的时候调用它们。 -
1:00 - 1:03例如,当你在代码里定义了“draw”(画画)函数,
-
1:03 - 1:07那我们就会找到这个函数,
我们会分析该函数内的代码, -
1:07 - 1:12然后我们反复调用该函数,
调用得越快越好。 -
1:12 - 1:16如果你不定义一个“draw(画画)函数”的话,
那我们就什么都不会调用, -
1:16 - 1:17因为那里什么都没有。
-
1:18 - 1:23这也就意味着如果我们把这个函数
重命名为“drow”的话, -
1:24 - 1:25——好吧,它运行不了。
-
1:26 - 1:27或者重命名为“drawCar”,
-
1:28 - 1:29——好吧,也运行不了。
-
1:29 - 1:33所以如果我们重命名这个函数,
程序就再也找不到它了。 -
1:33 - 1:35因为它就再也不叫“draw”(画画)了。
-
1:35 - 1:37最终它再也不能被反复调用,
-
1:37 - 1:39最终我们什么结果都得不到。
-
1:39 - 1:43所以,这就意味着你不应该把
你的自定义函数命名为“draw”(画画), -
1:43 - 1:45除非你想要它被区别对待,
-
1:45 - 1:48或者反复调用它。
-
1:49 - 1:52“draw”(画画)函数并不是唯一的魔法函数。
-
1:52 - 1:58还有许多其他函数,在用户使用鼠标
或者敲击键盘的时候,它们可以作出反应。 -
1:59 - 2:03让我们来展示另外一个动画程序的例子。
-
2:03 - 2:13假如说,我们希望当用户移动鼠标的时候,
一个彩球能出现。 -
2:14 - 2:17我们输入“draw”(画画),
然后输入“fill”(填充)”和“ellipse”(椭圆), -
2:17 - 2:19再输入(mouseX, mouseY, 10, 10)
-
2:19 - 2:20好了,我们来试一下。
-
2:21 - 2:21哇!好酷!
-
2:22 - 2:25这个这么酷的彩球就能不断出现了。
-
2:25 - 2:28这样子,这个函数,
这个“draw”(画画)函数里的代码 -
2:29 - 2:30就能被反复调用了,
-
2:31 - 2:34因为我们把它放在一个叫
“draw”(画画)的函数里。 -
2:34 - 2:37所以,即使用户没有移动鼠标,也能调用它们。
-
2:37 - 2:40现在我没有移动鼠标,但是它还是能被调用。
-
2:41 - 2:47其实,还有一种更好的、效率更高的方法。
-
2:48 - 2:53我们可以做的事就是把“draw”(画画)函数
改成“mouseMoved”(鼠标移动)函数。 -
2:54 - 2:57我们的运行环境会不断检查,
-
2:57 - 2:59看它们有没有定义一个叫
“mouseMoved”(鼠标移动)的函数。 -
3:00 - 3:02如果有的话,那只要用户移动鼠标,
它们就会调用该函数。 -
3:03 - 3:06再看看,现在它还能运行。
-
3:07 - 3:10但是,如果用户没有移动鼠标的话,
该函数就不会被调用。 -
3:10 - 3:14只要我不再移动我的鼠标,
它就不会被调用。 -
3:15 - 3:17还记得我们之前用“draw”(画画)函数的时候吗?
-
3:18 - 3:22即使我们没有移动鼠标,
代码也一直在被调用。 -
3:22 - 3:23但是现在我们用了“mouseMoved”这个函数,
-
3:23 - 3:27那就只有当我们需要,即鼠标实际移动的时候,
才会调用该代码。 -
3:27 - 3:29这样,我们的程序就变得高效多了。
-
3:30 - 3:34总体而言,如果你希望只有当用户移动鼠标时,
程序才输出结果, -
3:34 - 3:39那么最好把代码放在“mouseMoved”函数里面,
而不是“draw”函数里面。 -
3:40 - 3:44还有很多像“mouseMoved”(鼠标移动)
这样的魔法函数,如: -
3:44 - 3:47“mousePressed”(按击鼠标);“mouseReleased”
(松开鼠标);“keyPressed”(敲击键盘)等, -
3:47 - 3:50你可以在文件记录中看到所有这些函数。
-
3:50 - 3:54最关键的是要记住,
如果你想要使用魔法函数, -
3:54 - 3:56一定要正确拼写它们。
-
3:56 - 4:00如果你不用魔法函数的话,
确保你会给你的自定义函数起一个新的名字。
Zhuofu Li edited Chinese, Simplified subtitles for Magic Functions (Video Version) | ||
Zhuofu Li edited Chinese, Simplified subtitles for Magic Functions (Video Version) | ||
Zhuofu Li edited Chinese, Simplified subtitles for Magic Functions (Video Version) | ||
温 一丁 edited Chinese, Simplified subtitles for Magic Functions (Video Version) | ||
Zhuofu Li edited Chinese, Simplified subtitles for Magic Functions (Video Version) | ||
温 一丁 edited Chinese, Simplified subtitles for Magic Functions (Video Version) | ||
Zhuofu Li edited Chinese, Simplified subtitles for Magic Functions (Video Version) | ||
Zhuofu Li edited Chinese, Simplified subtitles for Magic Functions (Video Version) |