2014-11-15 4 views
0

저는 작은 보드 게임을 가지고 있습니다. 상대방에게 마지막 동작을 보여 주기만하면됩니다.ImageView의 애니메이션

내가 뭘하려고 수 있습니다 :

1 단계 : 기존의 조각을 보여 다시

내가 시도 무엇

,

: 애니메이션

3 단계로 이동합니다 : 모든 조각

2 단계 숨기기

[UIView animateWithDuration:5.00 delay:0.5 
         options:UIViewAnimationOptionCurveEaseOut //4 
        animations:^{ 

         for (int i = 0; i<[_piecePlayer1 count]; i++) { 
         [[_piecePlayer1 objectAtIndex:i] hide]; 
         [[_piecePlayer2 objectAtIndex:i] hide]; 

         } 


        } 
        completion:^(BOOL finished){ 


}]; 

이렇게 숨어 있습니다.

-(void)hide{ 

    CATransition *animation = [CATransition animation]; 
    animation.type = kCATransitionFade; 
    animation.duration = 0.4; 
    [self.layer addAnimation:animation forKey:nil]; 

    self.hidden = YES; 
} 

문제 :

1 작품 잘 단계,하지만 2 단계를 건너 뛰고 그냥 즉시 표시 completion block에서 조각을 표시하려고하면 심지어 내가 지연 중첩 된 애니메이션 블록을 배치했다.

그리고 이것을 어떻게 단계적으로 수행 할 수 있으며, 처음 완료되면 다른 애니메이션을 수행 할 수 있습니까? danielquokka

덕분에이 일 Repeat Animation

답변

1

에 특별한 감사 나는 핵심 문제는 숨겨진 속성이 애니메이션 아니라고 생각합니다. 대신 animate 할 수있는 alpha 속성을 사용하십시오. 하지만 어쨌든 여기 왜 CATransition을 사용하는지 보지 못합니다. 다음 코드는, 조각을 페이드 아웃 잠시 지연, 그리고 다시 그들을 사라질 것 정말 일이 일을 원하는 방식으로 작동

[UIView animateWithDuration:5.00 
         delay:0 
        options:UIViewAnimationOptionCurveEaseOut 
       animations:^{ 
         for (int i = 0; i<[_piecePlayer1 count]; i++) { 
          _piecePlayer1[i].alpha = 0.0; 
          _piecePlayer2[i].alpha = 0.0; 
         } 
        } 
        completion:^(BOOL finished){ 
         [UIView animateWithDuration:5.00 
               delay:0.5 
              options:UIViewAnimationOptionCurveEaseIn 
             animations:^{ 
               for (int i = 0; i<[_piecePlayer1 count]; i++) { 
                _piecePlayer1[i].alpha = 1.0; 
                _piecePlayer2[i].alpha = 1.0; 
               } 
              } 
              completion:^(BOOL finished){} 
         }]; 

}]; 
+0

;. 아직 남아), 그러나 한 가지, 사용자가 하나를 가질 수 또는 더 많은 동작을하지만 애니메이션 블록에 대한 for 루프를 사용하면 시퀀스가 ​​작동하지 않습니다. 현재 볼이 숨겨지면 어떻게 순서대로 애니메이션을 움직일 수 있습니까? 당신은 아이디어를 줄 수 있습니다. 나는 – user3141985

+0

을 시도 할 것입니다. 그 안에있는 애니메이션과 함께 개별적인 움직임을 만드는 방법을 제안하고, 애니메이션의 완료 블록에서 같은 메소드를 다시 호출하도록하십시오. 상태 (인스턴스) 변수는 어떤 단계인지를 결정할 수 있으며 애니메이션이 완료되면 페이드 인을 호출 할 수 있습니다. – danielquokka

+0

멋지다, 나는 재귀와 함께 일할 것이다. – user3141985