克隆角色
-
介绍
在有些项目中,我们需要用到很多个表现相同的对象。例如,我们想让10只小狗在舞台上随意走动。比较幼稚的方法就是创建10个小狗角色并分别添加代码积木。问题是,大部分代码是相近的,所以我们要重复添加相同的积木10次。
更好的方法就是用“克隆”。当我们克隆某个角色,就是新建这个角色的副本,包括其代码积木、造型和声音。不过,一个主要区别就是,只有当程序开始运行后我们才新建角色副本。所以,在程序开始后,我们对角色的代码和造型所做的全部更改都会完好无损地复制过去。当程序结束时,所有克隆体都被自动删除。
与克隆相关的所有积木都在“控制”类别:
如何克隆?
可使用该积木进行克隆:
-
角色列表:第一个参数指定克隆哪个角色。“自己”就是该积木所在的本角色。如果项目中还有其他角色,例如“篮球”、“棒球”,其名称也会显示在该列表中。
-
克隆体ID编号:第二个参数可以给克隆体赋值一个数字或文本。如果空着,就会给新的克隆体赋值一个随机的唯一ID。
例如,这个程序会创建3个克隆体,ID编号分别为“1”、“2”、“3”。
注意:你看不出来有3个克隆体,因为克隆体都和原角色重叠在一起,位置、大小和造型都完全一样。
创建克隆体后运行的代码
生成克隆体后,为了让克隆体做一些行为,你可以在这个积木下面添加新的代码积木:
例如,这段代码让每个克隆体移动到随机位置,这样我们就能清楚看到全部克隆体。注意,原角色不受克隆体行为的影响。
克隆体ID编号
当创建好所有克隆体之后重新调用这个积木,每个克隆体被赋值一个唯一ID。利用这个积木,每个克隆体都能找出自己的ID。
例如,我们可以让克隆体报告自己的“克隆ID”:
让克隆体删除自身
利用这个积木,克隆体做完行为后就可以删除自身:
注意:不能在这个积木下面连接其它积木,因为克隆体已经被删除。
在如下示例中,我们让每个克隆体说出自己的“克隆ID”,时长2秒,然后删除自身。
获取克隆体的信息
舞台下方的角色面板只显示原角色的信息。无论如何,原角色仍然能利用这个积木根据克隆体的ID获取其信息:
-
属性名称:第一个下拉菜单包含了所能读取的克隆体的属性列表,比如位置、方向和造型。
-
角色名:第二个下拉菜单指定你想查询哪个角色或者克隆体。
例如,生成3个克隆体后,你可以通过原角色获取克隆体的“x位置”。
利用消息与克隆体通信
尽管你可以在积木“当作为克隆体启动时”下面添加克隆体的代码积木,但这些积木只能运行一次。与克隆体“通话”的另一种方式就是广播消息。其好处就是,你什么时候都可以发送消息。
例如,在这个程序中,生成所有克隆体后,我们在原角色广播“消息1”。还有一个积木用来接收这个消息。因为所有克隆体的代码与原角色相同,所以都会运行这一叠积木“当收到消息( )”。
注意:原角色尽管不是克隆体,但也会响应“消息1”,并且也有一个随机“克隆ID”。一个普遍的做法就是,只让克隆体运行,隐藏原角色。比如,我们可以检查一下“克隆ID”是否属于我们赋予克隆体的ID范围。如果不是,那我们就在原角色的代码中,所以什么都不做并隐藏角色。
-