少儿编程Scratch3.0教程——10 自制积木(基础知识)(文字版)
在前面的课程中,我们已经学完了Scratch中所有的积木类型,每一个积木都有着属于自己的功能,它们有的功能使用简单,例如移动多少步,切换造型和背景,计算加减法。有的功能稍微复杂些,例如发送和接收消息,定义和使用变量。在使用这些积木的时候,你有没有想过自己也来制作一个积木,自己来定义它的功能。这就是这节课你将要学习的内容,自制积木。
这篇文章主要分为4个部分:
1、自制简单积木
2、自制参数积木
3、运行时不刷新屏幕
4、何时需要自制积木
第一,自制简单积木
如何制作自己的积木,方法很简单,当你选中某个角色后,选择积木分类下面的自制积木,然后点击右边出现的“制作新的积木”按钮,就会出现一个类似新建变量一样的窗口。
在最上面的积木中填入积木的名称,列如我们现在创建一个名称叫“开车”的积木,中间的可以添加积木的参数(第2部分说明),参数下面不勾选“运行时不刷新屏幕”(第3部分说明),然后点击完成。
这时,自制积木分类中就会出现一个新的积木,名称叫开车,然后代码区也会出现一个,定义“开车”的积木。
现在我们已经创建了一个新积木,但是这个积木具体可以做什么,还需要你来定义它。就像是移动积木可以让角色在舞台中移动,说话积木可以让角色通过说话气泡说话,现在需要你来定义开车积木可以让角色做什么。
你可以使用计时器、重复执行和移动积木让角色向前移动一秒钟,就像车子开动了一样。
定义好以后,要如何使用它?就像使用其他积木一样,只需要将它拼接到需要使用它的位置就行了。你可以使用当绿旗被点击事件,接着设置角色初始状态,播放一段汽车喇叭声音,然后开车。
这样当你点击绿旗时,车就开动了。

怎么样,是不是很简单,就和你使用其他积木一样,不过你创造了一个属于自己的积木。
第二,自制参数积木
参数是什么?还记不记得,我们在使用移动多少步积木或者说话积木时,可以在积木里面填入移动的步数和说话的内容,这里的步数和内容就是积木的参数。实际上,参数就是一个变量,当你使用积木时往里面填入内容,就是为这个变量设置值。
参数有三种选择,添加数字和文本输入项,添加布尔值输入项,添加文本标签。
添加数字和文本输入项,就像是移动和说话积木的输入框,里面可以填入数字和字符文本。
添加布尔值输入项,就像是与和或积木的输入框,里面可以放入返回布尔值(true和false)的积木,例如大于和小于积木。
添加文本标签,就是积木上显示的文字,例如创建积木时取的名字,或者移动...步积木中的“移动”和“步”这三个字。
用鼠标点击三种选择中的任意一项,就会在名称旁边多一个输入项,输入框的上面会有一个垃圾桶图标,点击图标就可以删除选中的参数。
你可以将数字、文本和布尔值输入项中的文字改为参数的描述,将文本标签改为积木上需要显示的文字。例如,我们来把刚刚的“开车”积木修改一下,增加两个参数,开车的速度和时间。
接着,你就可以在定义积木中使用添加的参数变量,例如新加的时间和速度值。在使用“开车”积木的地方,填入需要的时间长度和速度值。
你填入的时间和速度不同,小车运行的时间和速度就不同。这就是我们在学习变量积木时所说的,使用变量来取代游戏中会发生变化的部分。

第三,运行时不刷新屏幕
接着,还剩下制作积木窗口中的是否勾选“运行时不刷新屏幕”选项。这个选项是什么意思?
我们在学习切换造型积木时说过,我们平时看的动画实际上是把一张张静态图片滚动切换的效果。实际上,你每天使用的手机、电脑、平板这些电子设备的屏幕,它们每秒中都会刷新几十次,对于人眼来说,每秒至少需要刷新30次,你才会感觉到屏幕中的画面是流畅的。但是过于频繁的刷新又会对CPU造成很大负担,产生卡顿。因此,当我们做游戏时,如果不需要实时的看见角色移动的过程,只需要看见最后的结果,就可以在执行过程中不进行刷新,那你在制作积木时就可以勾选“运行时不刷新屏幕”。
例如,刚刚我们在制作开车积木时,没有勾选“运行时不刷新屏幕”,因此可以看见小车移动的过程,类似于使用了在...秒内滑行到X:... Y:...积木的效果。
如果勾选了“运行时不刷新屏幕”,我们看见的效果就会变成小车发生了瞬间移动,类似于使用了移到X:... Y:...积木的效果。并且,不同性能的电脑所看见的效果可能会有所差别。

所以,当你制作积木时,可以问自己一个问题,需要别人看见这个积木运行的过程吗?当然,如果你实在不能确实是否该勾选,默认就不用勾选它。
第四,何时需要自制积木
上面介绍了如何创建和使用自制积木,那什么时候需要自制积木呢?最简单的判断方式是,当你发现自己在使用某些积木做相同的事情时,就可以考虑自制积木。
例如,我们将刚刚的动画修改一下,在路边增加一个男孩和女孩,让车路过他们时停下来,接他们上车,然后返回原处。当没有使用自制积木时,就会像代码区左边的积木块这样,重复使用很多积木来让小车移动。而当你使用自制积木,改造成右边的积木块之后,代码变得更加简洁。
上面的代码除了变得更简洁之外,你有没有发现另外的好处?假设,左边这个代码不是你自己写的,当你第一次看见它时,你是否能够很快理解这些代码想实现什么功能?是不是有点难懂。而当你看见右边自制积木的代码时,是不是很容易就看懂了。
所以,当你发现自己的某些积木块不容易直观的理解它们的用途时,就可以考虑使用自制积木,并为它取一个有意义的名字。
以上,就是用来判断是否需要自制积木的两个条件,实际的使用过程中你可能还是会很难把握它们,因此需要你反复的练习和试验。
Scratch中的自制积木有点类似于高级编程语言中的函数(方法),但是功能却比函数弱很多。由于缺少指针引用,Scratch中的自制积木只能在当前角色中定义,当前角色中使用,并且没有返回值(可以利用变量变相实现)。等你学习完Scratch转入高级编程语言后,你就能体验到引用对程序封装所带来的好处。
同样的,如果你在学习过程中遇到问题无法解决,你可以扫码关注我的微信公众号“梦世界”给我留言,我会对你的提问一一进行解答。
Talk is cheap. Show me the code...
如果你看完以上内容,对少儿编程感兴趣,有初中以下想学习编程或者数学思维课的小朋友,欢迎联系。如果你有Web应用系统、手机APP、微信小程序等软件开发需求,也欢迎与我联系。期待能与你共同进步。。。
0条留言