2014-02-19 5 views
4

SKAction의 애니메이션이 완료되었는지 어떻게 확인합니까?SKAction이 실행 중인지 확인하십시오.

내 작업이 이미 완료되었거나 계속 수행 중인지 확인해야합니다. 그 후 기본 액션 중에 여러 액션을 피하기 위해 부울을 만들고 싶습니다.

SKAction *lionJumpActionComplete = [lionNode actionForKey:@"lionIsJumping"]; 
    lionJumpActionComplete = [SKAction sequence: @[lionJumpActionUp, lionJumpActionFly, lionJumpActionDown, lionJumpActionPause]]; 

    if (lionJumpActionComplete) { 
     return; 
    } 

    [lionNode runAction:lionJumpActionComplete withKey:@"lionIsJumping"]; 

답변

9

, 당신은 사용이를 확인하실 수 있습니다 완료 :

[lionNode runAction:[SKAction sequence: @[lionJumpActionUp, lionJumpActionFly, lionJumpActionDown, lionJumpActionPause]] completion:^{ 
    BOOL isActionCompleted = YES; 
}]; 
0

다음은 노드에서 보행 애니메이션을 만드는 예입니다. 다시 작성하기 전에 이전 키가 해당 키를 찾으면 완료되었는지 확인합니다. 당신은 작업 실행 후에 호출되는 완료 블록에 부울을 설정할 수 있습니다, 또는

if (!lionNode.hasActions) { // check if no actions are running on this node 
    // action code here 
} 

:이 노드에서 실행중인 작업 만 인 경우

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"]; 
} 
+0

죄송합니다. 그러나 작동하지 않습니다. –

+0

작동하지 않는 것에 대해 더 많은 컨텍스트를 얻을 수 있습니까? 당신은 당신의 행동을 열쇠로 등록 했습니까? – jervine10

+0

조치는 이제 화면을 터치 할 때마다 한 번만 실행됩니다 (작업이 실행 중일 때 제외). –

0

당신은 노드가 일에 그렇게 행동

실행되고 있는지 확인해야 영원히 행동을 일을 계속합니다

[self runAction:[SKAction repeatForever:[self actionForKey:@"zombieAction"]]]; 

수 있습니다 아마 더 나은

if (![self hasActions]) { 
    [self runAction:[self actionForKey:@"ZombieAction"]]; 
} 

경우

입니다.