0:00:00.877,0:00:06.001 我们又回到了“画温斯顿”这个程序了,[br]但是我添加了一些文字。 0:00:06.001,0:00:11.072 看,我想做的是在把温斯顿放在这些标签下面, 0:00:11.072,0:00:13.210 显示他不同的人生阶段。 0:00:13.432,0:00:14.903 现在他在屏幕上到处乱窜。 0:00:15.557,0:00:19.676 这是因为在该函数里,[br]我们把faceX和faceY 设置成了随机数。 0:00:20.457,0:00:26.714 但是,我们想做的事情是——[br]嘿,我想你把温斯顿画到我指定的这个位置。 0:00:26.714,0:00:30.316 我希望每次调用函数的时候,[br]我都能准确说明它的位置, 0:00:30.316,0:00:32.648 就像我们放置椭圆和矩形的时候一样。 0:00:34.048,0:00:40.460 我想要把温斯顿放在这里、这里,[br]还有一个温斯顿在这里、一个温斯顿在这里。 0:00:40.460,0:00:43.623 我不希望我每次调用函数的时候,[br]他满世界随机乱跑。 0:00:44.762,0:00:48.882 要做到这一点,我们要设置该函数里的参数, 0:00:48.882,0:00:52.502 既要在函数定义里设置参数——就是顶部这里, 0:00:52.811,0:00:57.302 也要是调用函数这里设置参数——[br]就是下面这里我们实际调用参数的时候。 0:00:57.302,0:01:02.210 在画温斯顿的时候,[br]我们传递的函数参数为faceX和faxeY, 0:01:02.210,0:01:09.058 我们要让该函数使用我们传递的值,[br]而不是生成随机数。 0:01:10.428,0:01:14.657 我们先这样想,我们传递完值后,[br]下面这些函数会如何调用它们呢。 0:01:14.657,0:01:17.541 我们想要把温斯顿放在每行标题文字下面, 0:01:17.621,0:01:24.491 这样每个温斯顿的X坐标跟Y坐标应该[br]跟这些标题文字的坐标很接近。 0:01:24.491,0:01:28.236 可能温斯顿的Y坐标[br]比标题文字的Y坐标低10个像素左右。 0:01:28.476,0:01:40.891 那第一个的X、Y坐标就应该是10、30,[br]然后是200、230;10、 230; 200、 230。 0:01:40.891,0:01:44.863 这跟标题文字的坐标是一样的。[br]只是每一个Y坐标我加了10, 0:01:44.863,0:01:47.405 因为我想把它放低一点点而已。 0:01:49.985,0:01:51.408 但是温斯顿没有动。 0:01:51.587,0:01:59.177 这是因为我们还没有告诉上面的函数我们要传递参数了,所以它还在用这些随机数值。 0:01:59.177,0:02:03.603 要告诉这些函数,“我们要给你这些信息啦”, 0:02:03.603,0:02:08.398 我们一定要在这些括号里面打入这些参数的名字。 0:02:08.398,0:02:14.106 我们将其命名为 faceX 和 face Y, 用逗号分隔开。 0:02:15.269,0:02:20.704 我们这样命名是因为在该函数里面[br]我们已经用了这些名字, 0:02:20.704,0:02:23.472 这样我们就不用重写其他代码了。 0:02:25.112,0:02:28.813 但是,还是什么都没有发生。[br]温斯顿还是在满世界乱跑。 0:02:28.813,0:02:31.353 如果你在看回来顶部的函数, 0:02:31.353,0:02:35.263 你会发现随机数值还是覆盖在faceX和faceY上。 0:02:36.099,0:02:38.793 所以我们要做的就是把这两行都删掉。 0:02:38.793,0:02:46.237 现在,faceX和faceY传递到函数里了, 0:02:46.237,0:02:49.581 而且它在使用我们在下面调用的值。 0:02:49.581,0:02:53.911 但是如你所见,温斯顿摆放的位置不是很正确, 0:02:53.911,0:03:01.151 因为我忘记了文字应该左对齐,脸则应该是居中。 0:03:02.071,0:03:06.383 所以我只需要修改一下我的数字是吧。 0:03:06.383,0:03:12.608 我要把 X 坐标右移很多, Y坐标下移一点。[br]好了,孩童时期的温斯顿弄好了。 0:03:12.608,0:03:14.268 我们继续。 0:03:14.708,0:03:22.518 我们现在只要修改一下函数的参数值即可,完全不用重新定义函数。 0:03:22.518,0:03:25.758 它会使用我们传递的值, 0:03:26.718,0:03:28.388 就像制作椭圆和矩形的时候一样。 0:03:28.388,0:03:33.348 现在我已经差不多摆放好了,[br]但是我又注意到温斯顿有点大。 0:03:33.348,0:03:35.756 几个温斯顿重叠在一起。[br]他的大小不大对劲。 0:03:35.756,0:03:39.019 因为我是写了一个代码,[br]用函数把温斯顿画出来的, 0:03:39.019,0:03:42.374 我也是一下子就可以改变全部的大小, 0:03:42.374,0:03:45.439 只要修改这一行画椭圆的代码即可。 0:03:45.439,0:03:50.626 我们看看改成190x190怎么样。[br]耶,温斯顿减肥了。 0:03:50.626,0:03:55.964 现在他的大小合适了。[br]然后,我还可以微调一下位置。 0:03:55.964,0:04:01.902 这样我就能把它放进去了是不是?[br]好酷! 0:04:03.541,0:04:08.531 我们再来回顾一下这个函数的功能。[br]它定义了一个叫做“画温斯顿”的函数, 0:04:08.531,0:04:14.673 它将采用两个值,[br]这两个值的名字叫faceX和faceY。 0:04:14.673,0:04:19.949 实际上这两个值就是参数,[br]我们可以在整个函数里使用它们, 0:04:19.949,0:04:23.055 就像我们以前使用在顶部声明的参数一样, 0:04:23.055,0:04:29.113 我们声明完函数之后就可以随时调用它们, 0:04:29.113,0:04:33.711 我们可以传递不同的值。[br]它也会每次使用新输入的值。 0:04:34.975,0:04:37.181 你也见证了这些函数的神奇效应, 0:04:37.588,0:04:41.090 我们可以设计一些我们觉得可以重复使用的代码, 0:04:41.436,0:04:46.460 但是我们也可以用参数说,[br]“嘿,你可以在这里修改一下这个代码。” 0:04:46.460,0:04:49.405 就像是一个菜谱,[br]你写下总体指令, 0:04:49.405,0:04:52.810 然后你突然发现你要喂的[br]不只是一个温斯顿,而是四个, 0:04:53.083,0:04:54.748 你不用一切重新开始, 0:04:54.802,0:04:57.632 你只需要调整一下原始指令,并把一切乘上4即可。 0:04:58.005,0:05:02.205 现在你可以开始想自己代码里的菜谱啦![br]哇!真好吃!