gpt4 book ai didi

ios - SKAction 序列是否真的等到 Action 结束?

转载 作者:可可西里 更新时间:2023-11-01 04:41:55 25 4
gpt4 key购买 nike

我有以下代码:

-(void)aggravatedSeek:(SKSpriteNode *)target{
_isAggravated = YES;

SKAction *action = [SKAction runBlock:^{
double randTime = 0.2;
NSLog(@"%f", randTime);
[self moveToSpriteNode:target withTimeInterval:randTime];
}];

//SKAction *repeatAction = [SKAction repeatAction:action count:6];
SKAction *rep = [SKAction sequence:@[action, action, action, action, action]]; //Test Sequence

[self runAction:rep completion:^{
[self runAction:blackColorAction];
_isAggravated = NO;

}];
}

我希望我的 Action 实际上等到上一个 Action 完成。意思是,我的 Action 需要排序,这样 rep Action 不会重复 action Action ,直到对象完成移动。目前,似乎输出会立即运行所有操作,并且不会按应有的方式对它们进行排序。我已经阅读了文档,我现在所拥有的就是他们所说的...

最佳答案

runBlock: 操作是一种一次性触发类型的操作。它将只运行一次 block ,然后 Action 立即“结束”。

你想要的是一些 Action 不是为了处理而设计的。它们运行一次,或运行一段给定的时间(持续时间)。然而,它们不会运行,直到满足某个任意条件——可能立即为真,可能最终变为真,也可能永远不会变为真。这种类型会使操作能够实现的所有可变计时功能失效(即线性时间与轻松时间缩放)。

你可以做的是将“moveToSpriteNode”移 Action 为一个 Action 发出,并在一个更新方法中单独检查 Sprite 是否已经到达节点。如果是这样,您将运行下一个移动 Action (不使用序列)。

更容易的是,您可以简单地依靠移动 Action 来结束,这意味着 Sprite 已经到达目标节点。然后这将触发序列中的下一个移动 Action 。如果您想在每个目标上运行一个完成 block ,只需从完成 block 内安排下一个移动操作。

关于ios - SKAction 序列是否真的等到 Action 结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19069966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com