🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
  在生活中,经常遇到猝不及防的突发事件,这时候需要提前准备好一定的补救措施。例如,我们在去上学的路上发现忘记佩戴红领巾了,那就赶快返回家里去取。又比如,如果今天的值日生生病了,没来上学,就让学习委员担任当天的值日生。在编程中,也有一种类似的事件处理的功能。事件处理是指根据预定义的事件的出现来启动代码的执行,例如当按下键盘上的某个按键、按下绿色的旗帜按钮,或者接收到一条同步消息等事件发生的时候,可能就需要执行一些相应的程序。 在scatch3.0中,“事件”类积木专门用来实现事件处理功能,如下图所示。 ![【Scratch2.0编程教程】第六节:事件模块](http://h.yiniuedu.com/56120f6eea508f79429c40c3511fbe92) 下面我们通过一个小程序来实践这些积木的功能。一个人通过各种造型制造出行走的感觉走过城市,走过沙滩,然后再到城市,随着背景的变化,人物的颜色也发生变化。当用户点击“s”键时人停下来,当用户点击“g”键的时候程序又动起来。当点击脚本的时候,人物会和你对话。 ![【Scratch2.0编程教程】第六节:事件模块-](http://h.yiniuedu.com/95d50ff21d7baf443d76576609ced1b8) "【Scratch2.0编程教程】第六节:事件模块") 点击绿旗启动程序,把人物移动到舞台的左下角,造型从第一个开始,背景也从第一个开始,然后执行行走的循环,每移动10步就切换一个造型,如果碰到边缘,那么就广播一条“news1”的消息,说明本阶段走完。 ![【Scratch2.0编程教程】第六节:事件模块-少儿编程网](http://h.yiniuedu.com/238a8a36b66e8b168deaf269cfb97793) 【Scratch2.0编程教程】第六节:事件模块") 当角色接收到“news1”消息后,让人从新回到起点,切换背景为下一个,再重复执行行走的循环,碰到边缘和上面的处理方式相同。 [![【Scratch2.0编程教程】第六节:事件模块-少儿编程网](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063830424.jpg)](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063830424.jpg "【Scratch2.0编程教程】第六节:事件模块") 当你用鼠标点击人物的时候,他还会和你对话:“你好,我是Mark,咱们一起去郊游可好?”。 [![【Scratch2.0编程教程】第六节:事件模块-少儿编程网](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063830704.jpg)](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063830704.jpg "【Scratch2.0编程教程】第六节:事件模块") 当按下“s”键的时候,程序停止。当按下“g”键的时候一切继续。 [![【Scratch2.0编程教程】第六节:事件模块-少儿编程网](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063830380.jpg)](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063830380.jpg "【Scratch2.0编程教程】第六节:事件模块") 切换背景的时候,将人物的颜色做一些变化。 在这段程序里,我们用到了大部分的事件模块的积木。当然你也可以根据自己的需要添加一些背景音乐等等。 下面我们再来看看这段脚本的不同: [![【Scratch2.0编程教程】第六节:事件模块-少儿编程网](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063831651.jpg)](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063831651.jpg "【Scratch2.0编程教程】第六节:事件模块") 这两段脚本都是用来检测用户的方向键的输入,执行以下看看他们有什么不同?他们的区别在于前者可以同时响应多个按键的输入,比如同时按住向上键和向右键,角色能够实现对角线移动。而后者属于响应类的事件积木,同时只能响应一个需求,只能实现单方向移动。 在上面的程序中,我们看到了广播机制。Scratch的广播机制到底是什么呢?任何角色都可以广播带有名称的消息,一般消息的内容具有非常强的可读性。当其他觉得接受到消息后则触发执行相应的脚本。看看下面几个角色,在接收消息和广播消息中的反映。 [![【Scratch2.0编程教程】第六节:事件模块-少儿编程网](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063831750.jpg)](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063831750.jpg "【Scratch2.0编程教程】第六节:事件模块") 下面我们再来看一个广播的例子,一个程序有5个角色,在接收到广播消息后利用图章画出造型花朵图案。 [![【Scratch2.0编程教程】第六节:事件模块-少儿编程网](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063832835.jpg)](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063832835.jpg "【Scratch2.0编程教程】第六节:事件模块") 程序启动时,清空和隐藏所有,点击舞台的时候,发出广播: [![【Scratch2.0编程教程】第六节:事件模块-少儿编程网](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063832420.jpg)](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063832420.jpg "【Scratch2.0编程教程】第六节:事件模块") 再来看看各个角色的脚本: [![【Scratch2.0编程教程】第六节:事件模块-少儿编程网](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063832540.jpg)](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063832540.jpg "【Scratch2.0编程教程】第六节:事件模块") [![【Scratch2.0编程教程】第六节:事件模块-少儿编程网](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063832730.jpg)](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063832730.jpg "【Scratch2.0编程教程】第六节:事件模块") [![【Scratch2.0编程教程】第六节:事件模块-少儿编程网](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063832248.jpg)](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063832248.jpg "【Scratch2.0编程教程】第六节:事件模块") [![【Scratch2.0编程教程】第六节:事件模块-少儿编程网](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063833269.jpg)](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063833269.jpg "【Scratch2.0编程教程】第六节:事件模块") [![【Scratch2.0编程教程】第六节:事件模块-少儿编程网](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063833315.jpg)](http://code.yanjiansem.com/uploadfile/2019/0723/20190723063833315.jpg "【Scratch2.0编程教程】第六节:事件模块") 运行脚本看看,有什么不一样的效果? 在这一课中,我们简短地介绍了Scratch3.0中的一些基本概念和编程方法,以及程序设计中一些较为通用的基本概念,特别是简单展示了它们在Scratch 3.0中是如何实现的。这一课的内容为我们学习后面的编程和游戏的开发打下了一个很好的基础。