2012-09-07 10 views
0

for 루프가 실행될 때마다 함수 animate 처리를 호출해야합니다. 이 예 individually.For 인덱스 번호를 모두 호출하는 대신 모든 지점에서 카드를 다루고 그것을 다루는 대신 5 개체의 인덱스를 제공 할 때까지for 루프에서 메서드를 호출하는 방법

-(void)animateDealingToPlayer:(Player *)player withDelay:(NSTimeInterval)delay 
{ 
self.frame = CGRectMake(-100.0f, -100.0f, CardWidth, CardHeight); 
self.transform = CGAffineTransformMakeRotation(M_PI); 


NSArray *position = [NSArray arrayWithObjects: 

        [NSValue valueWithCGPoint:CGPointMake(100, 100)],        
        [NSValue valueWithCGPoint:CGPointMake(0, 0)],            
        [NSValue valueWithCGPoint:CGPointMake(0, 0)],       
        [NSValue valueWithCGPoint:CGPointMake(200, 100)],       
        [NSValue valueWithCGPoint:CGPointMake(200, 100)],             


        nil];    


for(int i=0; i<6; i++) { 
    NSValue *value = [position objectAtIndex:i]; 
    CGPoint point = [value CGPointValue]; 
    NSLog(@"%@",NSStringFromCGPoint(point)); 

    _angle = [self angleForPlayer:player]; 

    [UIView animateWithDuration:0.2f 
          delay:delay 
         options:UIViewAnimationOptionCurveEaseOut 
        animations:^ 
    { 





     self.center = point;    



     self.transform = CGAffineTransformMakeRotation(_angle); 
    } 
        completion:nil]; 

는 지금은 self.center 반복 재 작성한다 단지 (200,100)에. 매 순간마다 애니 메이팅을 호출 할 수있는 방법이 필요하므로 모든 점을 처리 할 수 ​​있지만 어떻게해야합니까? 내가 얻을 수있는 도움을 주시면 감사하겠습니다.

+0

왜 플레이어 오브젝트 대신에 센터를 설정하고'self'로 변환하고 있습니까? –

+0

전체 코드를 게시하지는 않겠지 만 이와 같이해야합니다. 여러 명의 선수가 있기 때문에. –

+0

요소 5의 위치 만 변경해보십시오. 이제 요소 5의 위치가 바뀝니 까? 문제는 당신이 한 요소 ('카드'를 다루는)를 5 번 애니메이트하고 있다고 생각합니다. - 그런 애니메이션을 쌓아 올릴 수 있는지 모르겠습니다. 마지막 카드가 사용 된 유일한 카드이거나 모든 애니메이션이 동시에 카드에 적용됩니다. –

답변

1

하나의 뷰 요소에 적용되는 여러 애니메이션 블록을 생성하고 한 번에 모두 적용하는 것이 문제입니다.

대신 완료되면 애니메이션 블록이 다른 애니메이션을 트리거하게 할 수 있습니다. Apple View Programming Documentation의 예입니다

: 나는이 게시하도록하겠습니다

"목록 4-2 첫 번째는를 완료 한 후 새로운 애니메이션을 시작 완료 핸들러를 사용하는 애니메이션 블록의 예를 보여줍니다"

// center card on dealer 
Animate: ^{ 
    // move card to player1 
}, completion: ^{ 
    // center card on dealer 
    Animate: ^{ 
    // move card to player2 
    }, completion: ^{ 
    //center 
    // animate again, and again etc. 
    } 
} 
: 여기에 예를 들어 당신은 당신이 아마 (의사 코드)해야한다, 문서! : 당신의 예에서

- (IBAction)showHideView:(id)sender 
{ 
    // Fade out the view right away 
    [UIView animateWithDuration:1.0 
        delay: 0.0 
        options: UIViewAnimationOptionCurveEaseIn 
        animations:^{ 
             thirdView.alpha = 0.0; 
        } 
        completion:^(BOOL finished){ 
            // Wait one second and then fade in the view 
            [UIView animateWithDuration:1.0 
                 delay: 1.0 
                 options:UIViewAnimationOptionCurveEaseOut 
                 animations:^{ 
                    thirdView.alpha = 1.0; 
                 } 
                 completion:nil]; 
        }]; 
} 

을 읽고 그것에 대한 느낌을 얻을 수 있지만, 갈 수 있도록

관련 문제