首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Scratch编程之旅之事件专题篇

事件在编程中是一个非常重要的概念,事件驱动是提升应用并发性能的利器,比如大名鼎鼎的Nginx和netty等都使用了事件驱动模型来解决并发压力,这让它们在同类产品中脱颖而出。我们当前的目的并非打造一个功能强大的并发框架或者应用,这对于小朋友们而言也不具有操作性,但是Scratch既然提供了事件机制,对此有所了解是有必要的,也可为后续深入编程做一些铺垫。

Scratch中的事件积木分为两大类:监听事件和触发事件

监听事件积木共有6个,其实这里又要分两个子类,一类是局部事件监听,也就是只能监听单一数据源的事件(往往是该角色本身),比如“当旗子被电击”、“按下XX键”、“当角色被点击”都是属于此类。

另外一种监听事件积木是全局事件监听积木,它可以监听到来自外部的事件,比如背景切换、声音响度、定时器、收到指定消息,我们可以利用此类积木进行多线程通信(我们可以把活动的角色理解为一个线程)。

事件机制天然是支持多线程的,有事件监听必然就有事件触发,这才是一个完成的闭环,否则是无法达到我们预期的效果的。事件触发和响应通常是由多个角色完成的,当然由同一个角色完成也未尝不可。理论上事件处理的完整过程包括触发、监听、响应,涉及到事件源、事件监听者、事件处理者,但是在Scratch我们没办法做更高层次的抽象。

触发事件积木包括2个积木:“发送消息”、“发送消息并等待”。需要注意的是这两个积木要和“收到消息”积木配合使用,一个是事件发送一个是事件处理,通过这个我们就可以实现多角色之间的通行,在我们前面的“水果游戏”和“飞猫历险记”中都有案例。

事件机制可以把同步逻辑转变为异步,程序无须等待任务的执行结果,触发事件后可立即执行其他任务。当然事件机制也有它的缺陷, 一般由一个子线程执行,它可能执行失败,这样就会破环数据的一致性。为了数据的一致性我们可以引入确认机制,但是应用的性能会大打折扣。所以大家要记住,没有一种方案可以解决所有问题。

技术服务于社会,让世界变得更美好。如果您或者您的小孩对编程有兴趣,请关注我,我是小码哥哥,我将尽我所能帮助你们,有任何问题可以帖下留言或者关注私信,共同探讨,共同进步,成就彼此。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191001A05UJP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券