2013-12-08 2 views
1

배열의 SKSpriteNodes가 있습니다 (이 질문의 목적을 위해 UIViews [개념은 같은 방법이어야합니다]). 보기에 첫 번째 요소를 추가하려고합니다. 3 초 지연을 시작하고, 두 번째 요소를 뷰에 추가하고, 3 초 지연을 시작하려고합니다. 초기 생각은 NSTimer를 사용하는 재귀 함수가 될 것입니다. 그게 최선의 방법이 될 것이라고 확신하지 못합니다. 어떤 팁?하나씩 배열의 각 요소 표시

+0

for (int i = 0; i <[yourArray count]; ++ i)' – nhgrif

+0

@nhgrif 질문은 각 요소 사이에 3 초 지연을 사용하여 각 요소를 하나씩 표시하는 방법이었습니다. – godel9

+0

'NSTimer'의 문제점은 무엇입니까? – nhgrif

답변

2

옵션 1

사용 SKActionperformSelector과 : 다음

self.nextIndex = 0; 
SKAction *action = [SKAction sequence:@[[SKAction waitForDuration:3.0], 
             [SKAction performSelector:@(addNextItem) onTarget:self]]]; 
[self runAction:action]; 

, addNextItem 정의 :

- (void)addNextItem 
{ 
    [self addChild:myArray[self.nextIndex++]]; 
    if(self.nextIndex < [myArray count]) { 
     SKAction *action = [SKAction sequence:@[[SKAction waitForDuration:self.nextWait], 
               [SKAction performSelector:@(addNextItem) onTarget:self]]]; 
     [self runAction:action]; 
    } 
} 

옵션 2

당신이 블록에 익숙하다면

, 당신은뿐만 아니라 것은 이러한 유형의 블록을 사용할 수 있습니다

  • Apple: Getting Started with Blocks
  • How To Use Blocks in iOS 5 Tutorial
  • : 여기
    __block NSUInteger index = 0; 
    void (^addItem)(void) = ^(void) { 
        SKNode *node = myArray[index++]; 
        [self addChild:node]; 
    }; 
    SKAction *action = [SKAction sequence:@[[SKAction waitForDuration:3.0], 
                 [SKAction runBlock:addItem], 
                 [SKAction waitForDuration:3.0], 
                 [SKAction runBlock:addItem], 
                 [SKAction waitForDuration:3.0], 
                 [SKAction runBlock:addItem], 
                 [SKAction waitForDuration:3.0], 
                 [SKAction runBlock:addItem]]]; 
    [self runAction:action]; 
    

    사용 블록에 대한 몇 가지 참조입니다
+0

흠, 좋은 해결책 인 것 같습니다. 나는 블록의 개념에 상대적으로 익숙하지 않지만, 좋은 링크가 있습니까? 또한 지연 시간이 추가되는 b/w 요소를 변경할 수 있어야한다면 어떻게 될까요? 이 솔루션은 그 시나리오에 맞게 확장 될 수 있습니까? – Monkeyanator

+0

@ Monkeyanator 흠 ... 블록은 꽤 까다 롭습니다. 그것들은 클로저의 한 형태이기 때문에 클로저에 익숙하지 않다면 가파른 학습 곡선이 생길 수 있습니다. 나는 당신을 위해 더 잘 작동 할지도 모르는 블록을 피하는 두 번째 옵션을 추가했다. – godel9

+0

알았어, 고마워! – Monkeyanator