如何检查SKAction
是否已完成动画?
我需要检查我的操作是否已完成或仍在执行其操作。之后,我想创建一个布尔值,以避免在主要操作期间发生多个动作。
SKAction *lionJumpActionComplete = [lionNode actionForKey:@"lionIsJumping"];
lionJumpActionComplete = [SKAction sequence: @[lionJumpActionUp, lionJumpActionFly, lionJumpActionDown, lionJumpActionPause]];
if (lionJumpActionComplete) {
return;
}
[lionNode runAction:lionJumpActionComplete withKey:@"lionIsJumping"];
答案 0 :(得分:9)
如果这是您节点上运行的唯一操作,则可以使用以下方法进行检查:
if (!lionNode.hasActions) { // check if no actions are running on this node
// action code here
}
或者,您可以在完成块中设置布尔值,该块在操作运行并完成后调用:
[lionNode runAction:[SKAction sequence: @[lionJumpActionUp, lionJumpActionFly, lionJumpActionDown, lionJumpActionPause]] completion:^{
BOOL isActionCompleted = YES;
}];
答案 1 :(得分:0)
以下是我在节点上创建步行动画的示例。在我再次创建它之前,我确保通过寻找它的密钥来完成前一个。
SKAction *animAction = [self actionForKey:@"WalkingZombie"];
if (animAction) {
return; // we already have a running animation
}
[self runAction:
[SKAction animateWithTextures:[self walkAnimationFrames]
timePerFrame:1.0f/15.0f
resize:YES
restore:NO]
withKey:@"WalkingZombie"];
}
答案 2 :(得分:0)
您需要检查节点是否正在运行操作
所以在这种情况下
if (![self hasActions]) {
[self runAction:[self actionForKey:@"ZombieAction"]];
}
可能更好
[self runAction:[SKAction repeatForever:[self actionForKey:@"zombieAction"]]];
将永远继续行动。