1

我的游戏中有一个节点,我希望能够在它已经开始执行后将其他操作排队。这还有可能吗?

4

4 回答 4

0

是的,这是可能的。查看 CCSequence(按序列运行的一系列动作)和 CCSpawn(产生新动作,在使用序列时特别有用)。

您唯一不应该做的就是同时运行两个相同类型的操作。例如多个 CCMove* 或 CCTint* 动作。这是因为它们会覆盖彼此的更改,这将导致奇怪的行为。

于 2012-12-15T14:23:50.120 回答
0

只是一个想法,还没试过。当您将 CCSequence 构建为最后一个操作时,放置一个 CCCallBlock,在该块内您将拥有一个机制来让您在运行时添加额外的操作。我在这里即时编写伪代码。作为动作的块追加看起来像这样:

{
     CCSequence *additionalActions = [MyRuntimeActionClass getAdditionalActionsForObject:spriteRunningTheAction];
     if(additionalActions)
          [spriteRunningTheAction runAction:additionalActions]
}

如果我们为对象存储了额外的动作,我们会得到序列并运行它。additionalActions 可以存储一个字典,其中键是要在其上运行的对象的地址(spriteRunningTheAction),并为要附加的 CCSequence 赋值

于 2012-12-16T12:05:38.243 回答
0

你能澄清一下吗?您可以将动作添加到已经执行动作的精灵。如果您希望稍后运行某个操作,您可以使用 scheduleOnce;这将允许您在指定的持续时间后执行方法。

于 2012-12-15T07:50:06.077 回答
0

我不认为您可以在进行时修改序列,但您可以添加一个“CCCallXYZ”操作来安排“一次拍摄”一个可以采取任何操作的类方法,包括为您的对象定义一个新的操作序列。时间和控制可能很棘手:)

于 2012-12-16T10:53:50.333 回答