现在我们谈谈你这期间 一直在用的 函数 当你使用 rect() fill() text() 这些命令时 你其实是在调用函数 这些函数就会实现 你所叫它们做的事情 函数究竟是什么 我们把一堆代码凑到一起 并给它取个名字 好让我们能 多次使用它的功能 比如rect() 它是用来干什么的 它就是用来画四条线的 是吧 而我们也可以只用line()这个函数 是吧 这样我们就得到了一个长方形样的东西 但当我们想要 画很多个长方形的时候 那么每次都进行这些计算 就相当地烦人了 还要费劲地思考 这个角的这条线要怎么画 那个角的要怎么画... 所以不如用个rect()函数 这个函数的效果跟之前 那四行代码的效果一样 却又更加简洁 这样还挺棒的 rect()这个函数 在可汗学院的所有的程序中 都是能直接用的 当然你也可以自己写个函数 然后在自己的程序里调用 举个栗子 假设我们要写个程序 我们想画很多次的温斯顿(黄脸娃娃) 因为我们可能会讲讲温斯顿的人生历程 并把每个年龄段的它都展示出来 所以我们开始写画出温斯顿的代码了 我们这里用 faceX 和 faceY 两个变量 来规定脸部的中心位置 之后画眼睛和鼻子的时候 就能参照这两个变量了 现在程序认得这些代码了 但它还不是函数 所以程序运行了一下 然后也只能就运行一次 所以我们就来把它转成函数吧 转化的步骤很像 声明变量那样 因为实际上 就是一样的 我们敲上 var drawWinston 这个名字不错 生动又形象 再敲上 = 号 然后接的就不是数字或字符串了 我们要接的是 function 不要拼写错了 然后是小括号 () 再后是前大括号 { 接着后大括号 } 最后是分号 ; 所以我们接下来就是要把所有 函数要用的功能都放进大括号里 所以我们要把底下的所有代码 都放进我们的函数里 缩进下更好看 啦啦 所以我们现在就把这些变量 整理成函数了 基本上我们是 把这块代码贴上了个标签 然后我们就能 随时告诉自己的程序: 嘿 找出带那标签的那段代码 运行它! 我们把这段代码转成可重复使用的了 但是别忘了 温斯顿不见了 我们弄丢了温斯顿 他人跑去哪儿了呢 好吧 其实是我们把代码放进函数里之后 相当于是告诉程序 嘿 这里的这些代码 是我想稍后还能用的 但只有我叫你用时 你才能用 所以我们就得叫程序运行这段代码 这就要“调用”函数 就跟使用ellipse() rect() line()一样 所以我们只要敲上函数名 drawWinston 后面接上小括号() 还有记得加上分号 啦啦 温斯顿出来了 好了 我觉得棒极了 但你可能无语了 因为我们相当于是把之前程序所做的 又做了一遍 有点傻是吧 不过函数的关键就是它能重复使用 所以我们现在要开工了 我们只需不断复制黏贴这个函数就可以了 额... 看起来没变嘛 但其实是有的 它画了多个温斯顿 可问题在于 它们完全重叠在一起了 如果有X光的话 我们就可以扫一下那图象 然后就能看到三个温斯顿了 但我可没X光眼 也许你有吧 但我们可以对函数做些小修改 然后就能看到了 你看 faceX 和 faceY 总是202和208没有 我们能用 random() 函数来做点改变 比如 random() 范围设成50到350 它就会 在范围里随机挑选一个数字 下面也是一样 这样每次调用这个函数时 它都会随机生成新数 如果我们点下刷新 温斯顿就会随机再现 棒呆了 哇 好了 我觉得这棒极了 因为本来这是要 写很多代码才能实现的 而有函数就省事多了 本来是要当前代码量的三倍的 不过这还不够实用 因为我们也许不想要随机的温斯顿 我们可能想要的是固定的温斯顿 想让它固定在屏幕的某个特定位置 那么敬请期待 因为下次我们就会讲 如何给这个函数传递参数 从而得到 位置固定的温斯顿