读着有点费劲的题目。解释一下,当一个角色使用了克隆功能的时候,绿旗代码归本体所有,当作为克隆体启动时代码归克隆体所有,其他事件代码为本体和克隆体共有。或者说,其他事件代码被克隆体继承了。之所以要掰扯这个事情,有两个原因,1.有时候我们希望一些功能是本体和克隆体共享,有时候希望不共享。2.克隆功能如果放在其他事件代码里,会产生克隆体克隆自己现象。
有些绕口了,下面我们以实例来展开分析吧。
01只有绿旗代码和克隆体代码两段
我们以一个程序为例,绿旗被点击后,小猫随机运动,按下空格克隆自己一次,克隆体不再克隆自己。
我们可以这么编程。本体一段程序,克隆体一段程序。
运行后,我们发现没问题,和设定的要求一样。这属于最普通的应用克隆体的方式。克隆体产生后,除了继承本体的状态属性外,不再和本体有联系。
02出现其他事件代码
不过,如果我们把代码调整一下,出现了本体代码和克隆体以外的其他事件代码,比如按下向上键漩涡特效+25,按向下键漩涡特效-25。我们编写好程序运行。
发现按向上键,或向下键的时候,本体和克隆体的漩涡状态是同时变化的。这就解释了我们开头说的结论,绿旗代码和克隆体代码外的其他事件代码被克隆体继承了。
03注意克隆条件的位置
根据上面01和02的对比,我们进一步修改程序,把克隆条件单独作为一个事件程序拿出来。
运行后,我们发现,按下空格的时候,依然可以克隆自己,但是发现,克隆体不仅仅来自本体,因为出现了好几种颜色的猫咪,而01中的猫咪的克隆体都是同一颜色。这是因为,克隆体对自己进行了克隆。这里就会涉及到一个问题,我们在编程的时候,是否允许克隆体克隆自己。
当按下空格的时候,本体+克隆体的数量在01中克隆体不克隆自己,那么数量的发展趋势是1,2,3,4,5,6,7,8,9,10。而在03中克隆体克隆自己,那么数量的发展趋势是1,2,4,8,16,32,64,128,256,512。03相比01很快地实现了全屏猫咪。当然512个猫咪是不存在的,scratch限定了克隆体的总数。这里又会引发出一个新问题,克隆体最大数量是多少?克隆体最大数量指的是单个角色的克隆体最大数量,还是所有角色克隆体的总和最大数量?这个我们下次再通过编程试验讨论。
以上代码很简单,可以自己尝试体会一下,如果直接需要代码文件,可以联系我。希望,以上分享对各位有所帮助,转发请注明出处。
scratch3.0小问题系列
我是苏小糖,平时玩玩scratch、microbit和arduino。后续会推出更多相关文章分享给大家。喜欢的话就关注我吧。