如何对某些对象实例执行操作?

时间:2016-06-23 01:34:45

标签: html5 construct-2

我一般不想对该对象采取行动 我有8个实例(0,1,2,3,4,5,6,7) 我只需要例如在2,5和7上进行操作 怎么??

1 个答案:

答案 0 :(得分:1)

这让我对来自软件工程背景的Construct 2感到困惑。

选择要生效的Sprite实例有点像过滤数据库。您从列表中的所有实例开始,然后使用条件过滤掉它们。如果可能,Construct 2将自动猜测您想要的实例。 (就像你刚刚在EnemySpawn产生敌人一样,它会知道你的下一个参考敌人只是最后一个创造的。)

这在大多数情况下神奇地起作用,但您可以选择一组具有以下几种条件的对象:

比较实例变量 比较一个对象的实例变量的当前值。

设置布尔实例变量 测试对象的布尔实例变量之一是否设置为true。 (反转条件以测试是否为假。)

选择唯一ID(UID) 选择与给定唯一ID(UID)编号匹配的实例。

根据我的经验,添加一个实例变量并将其设置为跟踪Sprite的子集或sprite的状态是将操作限制为特定sprite组的最简洁方法。

另见Scirra手册中的Object Expressions

  

您可以添加基于0的对象索引以从不同的对象实例获取表达式。例如,Sprite(0).X获取第一个Sprite实例的X位置,而Sprite(1).X获取第二个实例的X位置。有关更多信息,请参阅常用功能中的索引ID(IID)。您还可以为索引传递另一个表达式。负数从相反的一端开始,因此Sprite(-1).X获得最后一个Sprite的X位置。

这些不是“特定”对象ID(构造2称它们为索引ID或IID),而是按照创建顺序引用该类型的所有对象。

所以:
Enemy(0)是第一个 Enemy(-1)是最新的 Enemy(5)是第6个敌人创造的,无视被摧毁的精灵(见下文)。

你必须要记住,如果你用IID 3销毁一个对象,那么它之后的所有对象都将在列表中移动,它们的IID将减少一个。 (像LinkedList数据结构一样)

如果你销毁实例D,其他人就会转移

Instance |A|B|C|D|E|F|     -->     |A|B|C|E|F| 
IID      |0|1|2|3|4|5|     -->     |0|1|2|3|4|

希望其中一种方法可以帮助您达到所需要的效果!