Return to Video

魔法函数(视频版)

  • 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
    如果你不用魔法函数的话,
    确保你会给你的自定义函数起一个新的名字。
Title:
魔法函数(视频版)
Description:

本段视频截取于交互式编程详解,该视频有简单的字幕和翻译。如欲获知更多关于交互式编程的内容,请参阅如下网址:
https://www.khanacademy.org/cs/programming/

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

Chinese, Simplified subtitles

Revisions