2010-03-16 7 views
1

Я создаю карточную игру на iphone.Анимация нескольких UIView в цикле

Моя проблема в том, что я хочу анимировать карты в начале игры, делая карты анимированными с точки на другую точку в колоде.

Я перемещаю свои карты UIView в цикле. это то, что я делаю

С помощью этого кода, все карты перемещаются вместе, мне нужно переместить карты отдельно один за другим

CGPoint point; 

// Create the deck of playing cards 
for (int i = 0; i < 28; i++) { 
    CardView *aCardView = [self.mazzo objectAtIndex:i]; 

    point.x = -100; 
    point.y = 200; 
    aCardView.center = point; 

    aCardView.zPosition = i; 

    [self.viewGioco addSubview:aCardView]; 

    [aCardView release]; 

      //Here i call the method to position the card 
    [aCardView positionCard]; 

} 

в представлении карты есть эти методы

-(void)positionCard{ 
    [self performSelector:@selector(_positionCard) withObject:nil afterDelay:0.0]; 
} 
-(void)_positionCard{ 

[UIView beginAnimations:@"posizionacarta" context:nil]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UIView setAnimationDuration:0.3f]; 

CGPoint point; 

point.x = 280 + ((arc4random() % 2) - 1); 
point.y = 240 + ((arc4random() % 2) - 1); 

self.center = point; 

[UIView commitAnimations]; 

[self setNeedsLayout]; 

} 

ответ

0

Я думаю, что проще всего использовать счетчик i, чтобы рассчитать небольшую задержку на основе индекса карты, а затем передать это методу positionCard.

Итак:

[aCardView positionCardWithDelay:i/10]; 

И:

-(void)positionCardWithDelay:(NSNumber)delay 
{ 
    // Call _position card after a slight delay 
    [self performSelector:@selector(_positionCard) withObject:nil afterDelay:delay]; 
} 
+0

Спасибо, я попробовал, это бежать, но поток движения не является регулярным, некоторые рассматривают движение toghether. еще раз спасибо – Giovanni

+0

OK, Solved, используя i/40.4 как задержка. Большое спасибо – Giovanni

Смежные вопросы