2014-04-04 10 views
2

의 속도를 수정합니다. (이 방법은 업데이트를 호출됩니다 :) 그래서 나는 시도 :이 코드가 실행중인 SKAction

- (void)updateVelocity 
{ 
    NSLog(@"duration:%f",delayAction.duration); 
    delayAction.duration = delayAction.duration - 0.001; 
} 

그리고 난 얻을 : 좋은 것 같지만

2014-04-04 11:45:05.781 FlyFish[5409:60b] duration:1.300000 
2014-04-04 11:45:05.785 FlyFish[5409:60b] duration:1.299000 
2014-04-04 11:45:05.800 FlyFish[5409:60b] duration:1.298000 
2014-04-04 11:45:05.816 FlyFish[5409:60b] duration:1.297000 

내 [SKAction ...] 여전히 삼초 후 반복 계속 .

답변

8

나는 다른 방법을 사용합니다. 이이 함수에 다시 작업을 수행 한 후 올 것이다

- (void)recursiveActionMethod 
{ 
    if (some end condition is met) { 
     return; 
     // this allows you to stop the repeating action. 
    } 

    self.duration -= 0.01; 
    // store duration in a property 

    SKAction *waitAction = [SKAction waitForDuration:self.duration]; 
    SKAction *theAction = [SKAction doWhatYouWantHere]; 
    SKAction *recursiveAcion = [SKAction performSelector:@selector(recursiveActionMethod) onTarget:self]; 

    SKAction *sequence = [SKAction sequence:@[waitAction, theAction, recursiveAction]]; 
    [self runAction:sequence]; 
} 

이런 식으로 뭔가가 ...

... 다시 다른 대기 시간 다시 실행하고 다시 할에 당신은 할 수 있습니다 if 블록 내부로 점프하여 루프를 정지시키는 최종 조건을 갖춤으로써 시퀀스를 정지 시키십시오.

+1

니스 솔루션을. 어쨌든 나는 differnet aproax로 해결했습니다. actionForKey :로 액션을 검색 한 다음 제거합니다. 이 후 diffenret waitForDuration 함께 다시 시작합니다. – Godfather

2

조금 늦었지만 대신 액션을 SKActionTimingEaseOut으로 설정할 수 있습니다. 또한이 언어는 기본이며 약간 더 빨리 작동해야합니다. (당신은 속도의 변화를 사용자 정의 할 수는 없지만) 이이 유사하게 수행 할 수 있습니다

  1. yourSKAction.timingMode = SKActionTimingEaseOut;