Scratch高级编程之妙用变量管理母体与克隆体
一、 克隆简介
自从Scratch 2.0中引入克隆技术,程序中许多任务可以通过克隆技术更为高效地执行,而不再需要创建大量的精灵。克隆体实质上就是精灵的实例,这意味着它们继承了精灵的属性,但另一方面也是独立的对象。克隆体通常可能要执行与母体精灵稍有不同的任务,但一个关键的问题是:克隆体和母体精灵都对几乎所有事件块(触发器)能够做出响应。这样一来,专门为母体精灵设计的触发器在发出信号时也能够由克隆体运行。
实际开发中,当需要许多相似的精灵完成相似的任务时,就应该主动考虑到使用克隆技术。因为克隆是由程序而不是用户实现的,所以克隆的运用可以让用户不需要对许多精灵中的每个精灵进行相同的更改。因此,克隆技术可典型地应用于开发:
- 塔台防御小游戏(例如在地图上有大约200个塔台)
- 许多街机风格的游戏
- 子弹精灵(你想要多少就有多少,需要多少不同的角色就有多少)
- 复杂或半复杂粒子系统
- 烟火、雪等特效
- 鼠标轨迹
- 任何需要大量重复精灵的项目
【高级应用提示】Scratch中的克隆可以使用积木命令【当作为克隆体启动时】递归地克隆自身,有兴趣的朋友可作这方面更深入的探讨。
二、 借助变量管理母体与克隆体
先来看以下简单的代码:
【结论一】如果单击包含上述脚本(第二段)的母体的克隆体,则克隆体本身就会执行第二段代码。
如果只要求母体而不是它的克隆响应上面的代码,那么我们可以通过使用私有变量的办法来规定哪个对象(可以是母体,也可以是子克隆)运行哪个触发器。【结论二】如果不使用私有变量,则所有克隆体都将共享使用同一变量。
三、使用私有变量
私有变量可以用于存储单个母体精灵和各个克隆体的值,尽管它们具有相同的名称。例如,三个克隆体可以有一个名为“X方向速度”的变量,但是每个克隆都可以有自己的变量值。
类似地,母体精灵可以将其私有变量设置为特定字符串,而每个克隆体都可将其设置为不同的值。类之间不同变量值的概念允许选择母体精灵或子克隆体运行哪些代码。
【提示】熟悉面向对象编程的朋友应该对“继承”概念不陌生吧,父类可以派生出多种子类,而子类可以拥有与父类相似但又不同的各自特征。至此,大家应该对Scratch面向对象编程技术有更为深刻的理解了吧。
例如,我们想实现单击绿色标志时,立即删除所有克隆体,但母体精灵仍存在。下面,还是让我们通过具体的小例子来说明问题。
例1:克隆体行为与母体精灵不同
要实现这样的目的,首先请考虑在母体中编写下面的代码:
易知,保存在变量“instance”中的这一小段数据只显示该母体精灵是一个“精灵”。注意,要实现上述目的,“instance”必须是私有变量;否则将无法工作。接下来,必须指定一个脚本,为所有克隆体分配一个显示它们是“克隆体”的变量值。以下脚本可以完成此操作:
显然,只有克隆体才能执行这段代码!
上面的脚本不会更改母体精灵的变量“instance”的值。相反,每个克隆体都有自己的变量“instance”。
完成上面的两段编程后,变量“instance”和if语句相结合,就可以正确地将触发器指定为仅为母体精灵或其克隆体运行。
再来看下面的代码:
上面的脚本只适用于克隆,这是显而易见的,因为母体精灵的变量没有设置为“clone”,母体精灵不会执行此if块中的语句。请注意:上面这种使用“变量”的方法也是Scratch项目开发中调试克隆引起问题的非常有效的方法。
例2:克隆体行为彼此不同
下面的示例演示如何在单个母体精灵的脚本中管理多个克隆体类型。请注意,在生成每个克隆体(或一组类似克隆体)之前,会为专用变量“type”分配一个值。如果母体精灵要忽略广播,则应在生成克隆体后但在接收到广播消息之前设置其自身的唯一值“type”。
注:代码中type是私有变量。
私有变量“type”的值由每个克隆体从母体精灵继承,而母体精灵却会忽略接收广播的消息,因为它自己的“type”值不同。这种技术允许许多不同的克隆体类型以各自独特的方式工作。
小结
本文并没有给出复杂的完全例子,但是仅通过简短的小例,足以说明了仅凭借变量的全局性与局部性的巧妙运用即可实现Scratch复杂开发中母体与克隆体间差异行为的有效管理。在后面的博文中,我会进一步给出Scratch复杂开发中克隆技术的其他应用注意事项,并给出更系统完整的案例,敬请期待。
(https://blog.51cto.com/cloumn/detail/88 本人拙作,欢迎共同讨论)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Windows 10 计划淘汰开始菜单中的 Live Tiles
Windows Latest 发布的一份报告显示, 据熟悉开发情况的人士透露, “Microsoft 计划在将来的 Windows 10 20H2 更新中使用静态图标替换 Live Tiles”。 微软在 Windows 8 中引入了 Live Tiles,从那时起它们就成为了操作系统的一部分。目前,曾属于 Live Tiles 的辉煌时代已经过去。尽管 Live Tiles 在智能手机和平板电脑上非常有用,但大多数桌面用户则更喜欢直接使用旧式桌面 UI。在 Windows Mobile 消亡后,Microsoft 已完全停止了 Windows 10 上 Live Tiles 体验的更新。 事实上,Live Tiles 淘汰在 2019 年就已显露征兆。彼时,微软的 Windows 10内部版本意外泄漏,显示其取消了 Windows 10 中当前使用的“Live Tiles”。 新的开始菜单有点像 Windows 10X 上的开始菜单。报告指出,预计微软将在 20H2 更新中删除 Live Tiles,该更新将在 2020 年秋季推出。而Windows10 20H2 更新预计将是像 1...
- 下一篇
Spring注解配置和xml配置优缺点比较
Spring注解配置和xml配置优缺点比较 编辑 在昨天发布的文章《spring boot基于注解方式配置datasource》一文中凯哥简单的对xml配置和注解配置进行了比较。然后朋友看到文章后,就问:那你说说这两种区别。 编辑 额,说真的,还真把凯哥给问蒙圈了。本文来源:凯哥Java【kaigejava】 凯哥当时就回答:注解的方便。如果再深入呢?还真说不明白。 是啊,现在都在说注解好,但是注解和xml比较起来有哪些优点呢?xml又为什么不好呢?有没有深入思考过么?以下内容是凯哥从网上找的并加以理解的。 想要弄清楚这个,我们先来看看Xml. 就目前Java web 开发应用中都能见到用xml作为配置的身影。在常用的框架中如:struts、spring mvc、hibernate、mybites等这些框架中(早期版本表现更为突出)都有xml配置。 我们就来看看XML的优点: Xml优点 1:xml是集中式的元数据,不需要和代码绑定的; 在我们开发中,xml配置文件和代码类是区分开的。不需要绑定到代码中 2:使用xml配置可以让软件更具有扩展性; 比如,我们在spring中,我们不想使...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Mario游戏-低调大师作品
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8