【发布时间】:2016-10-25 03:41:15
【问题描述】:
我一般不想对对象进行操作 例如,我有 8 个实例 (0,1,2,3,4,5,6,7) 例如,我只需要对 2 、 5 和 7 进行操作 怎么样??
【问题讨论】:
标签: html construct-2
我一般不想对对象进行操作 例如,我有 8 个实例 (0,1,2,3,4,5,6,7) 例如,我只需要对 2 、 5 和 7 进行操作 怎么样??
【问题讨论】:
标签: html construct-2
对于来自软件工程背景的 Construct 2,我真的很困惑。
选择要影响的 Sprite 实例有点像过滤数据库。您从列表中的所有实例开始,然后使用条件将它们过滤掉。如果可能,Construct 2 会自动猜测您想要哪个实例。 (就像你刚刚在 EnemySpawn 生成了 Enemy,它会知道你的下一个引用 Enemy 只是最后一个创建的)。
这在大多数情况下都有效,但您可以选择一组具有以下几个条件的对象:
比较实例变量 比较对象实例变量之一的当前值。
是否设置了布尔实例变量 测试对象的布尔实例变量之一是否设置为 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(Construct 2 称它们为索引 ID 或 IID),而是按创建顺序引用该类型的所有对象。
所以:Enemy(0) 是第一个Enemy(-1) 是最近的Enemy(5) 是第 6 个创建的敌人,忽略被摧毁的 Sprite(见下文)。
但你必须记住,如果你销毁一个 IID 为 3 的对象,那么它之后的所有对象都将在列表中移动,并且它们的 IID 将减少 1。 (类似于 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|
希望其中一种方法可以帮助您获得所需!
【讨论】: