克隆体会执行与主体同样的操作,一度如同一个BUG一般,让我们的程序无法正常的运行,我们在前面的课程中提供过两个解决方案,一是让主体重复执行某个操作;另一个是为克隆体设置一个与主体不同的私有变量,根据该变量,来判断是否允许执行接下来的克隆操作。但克隆体的这个特性,有时候也会让人拍案叫绝。
批量控制示例 提取码:8pys
正所谓物尽其用,人尽其才,上一课的例子生成了多个克隆体,我们就用它们来作为这一节的示例。点击绿旗后,屏幕上会立即出现一个7×7的方阵,这个方阵是由克隆体构成的。在这里我们增加了一段积木,让对象在接收到消息1之后,执行一次变换造型的操作。
在这里我们增加了一个角色,用来发送消息1,当然由方块对象自己给自己发消息也是可以的,之所以要新建一个对象,是因为在这里组成方阵的对象我们可以视为一个由49个方块组成的大部队,而这49个人如果跟随主体一起发送消息的话,那简直就是密集的信息轰炸。
新增的角色只负责一件事情,就是发送“消息1”,单击一下发送消息的积木,方阵队伍的所有成员都会收到消息,而且会同时做出反应,于是方阵的背景会被统一改变。绘制方阵的时候,我们使用了自定义积木以实现加速,因为这个步骤中,是由对象1个人完成了49次操作,而这里并不需要有加速的操作,因为这次的变换操作是由49个克隆体一起合作完成的。合理利用克隆体,可以批量的改变我们的程序对象。
接下来我们修改一下程序,为方块对象添加1个命名为“单体序号”的私有变量,变量的命名完全可以根据自己的喜好来,但是需要注意的是在大多数编程语言中,变量名不允许包含中文字符。添加好变量之后,每克隆一次,让生成的克隆体的“单体序号”的值,等于该克隆体的X坐标。也就是说,如果这个克隆体在(-75,-75)的位置被生成,那么这个克隆体的“单体序号”变量的值就等于“-75”。接下来我们来区分一下需要执行操作的克隆体,比如让单体序号等于50,也就是仅让x坐标等于50的这一排克隆体执行变换造型的操作。
这样就实现了对克隆体中的某一行进行操作,通过判断x、y的坐标位置,我们可以做到精确的控制单排或者单列的克隆体,下一节,我们将利用列表对每一个克隆体进行点对点的精确控制。