2010-10-13 8 views
1

J'essaie d'avoir un bouton déplacer à une des coordonnées, pause, passer à un autre co-orinates, pause, puis déplacer à nouveau. le processus devrait alors répéter indéfiniment. ce que j'ai en ce moment déplace juste la dernière étape.l'animation d'un bouton avec des retards - iPhone

c'est ce que j'ai jusqu'à présent (« moteur » est le nom UIButton):

- (void) firstAnimation { 

     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration:0.5]; 
     [UIView setAnimationDelay:5]; 
     [UIView setAnimationRepeatCount:-1]; 
     [UIView setAnimationRepeatAutoreverses:NO]; 

     CGPoint pos = mover.center; 
     pos.y = 200.f; 
     pos.x = 169.f; 
     mover.center = pos; 

     [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(firstAnimation:) userInfo:nil repeats:NO]; 
     pos.y = 100.f; 
     pos.x = 179.f; 
     mover.center = pos; 

     [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(firstAnimation:) userInfo:nil repeats:NO]; 
     pos.y = 160.f; 
     pos.x = 129.f; 
     mover.center = pos; 

     [UIView commitAnimations]; 

} 

Merci pour toute aide

Répondre

1

Si vous expédiez pour iOS4 exclusivement, je recommande vivement l'utilisation de blocs et la méthode suivante:

[UIView animateWithDuration:kAnimationDuration 
         delay:kAnimationDelay 
        options:UIViewAnimationCurveEaseInOut 
       animations:^ { 
        // your animations here. 
       } 
       completion:^(BOOL finished) { 
        // what you want to do upon animation completion here. 
       }]; 

Notez que dans le bloc d'achèvement vous c un tout aussi bien repérer une autre animation. En fait, vous pouvez stocker les trois blocs d'animation en tant que variables de bloc, puis les transmettre simplement à la méthode ci-dessus pour les exécuter, l'un après l'autre, jusqu'à ce que le troisième se termine. Ensuite, redémarrez simplement le processus!

Les blocs sont vos amis.

+0

merci pour votre message. J'utilise ce qui suit pour fondre et masquer une image. comment le ferais-je répéter indéfiniment? - (void) {firstAnimation \t \t [UIView animateWithDuration: 2,0 \t \t \t \t \t \t \t \t \t \t animations:^{ \t \t \t \t \t \t \t \t \t \t \t \t tapImage.alpha = 0,0 ; \t \t \t \t \t \t \t \t \t \t \t \t tapImage.alpha = 1,0; \t \t \t \t \t \t \t \t \t \t \t} \t \t achèvement:^(BOOL terminé) { \t \t \t \t \t \t \t \t \t \t \t \t [self secondAnimation]; }]; } – hanumanDev

3

Vous n'avez pas besoin d'utiliser des minuteries, vient de mettre le délégué de l'animation s'auto-implémenter et implémenter la méthode animationfinished.

Voir ma réponse ici:

animations on infinite loop