2010-10-14 7 views
1

J'ai du mal à travailler avec les blocs d'animation. J'essaie d'avoir la première animation change l'alpha d'une image pour qu'elle clignote, puis après 10 secondes disparaît. la premièreAnimation passe ensuite à la secondeAnimation qui ne fait la même chose qu'à une image différente. le processus se répète alors indéfiniment.animation bloque une boucle infinie - iphone

J'ai travaillé avec ceci pendant un moment maintenant et ne peux pas le faire répéter indéfiniment. Un autre problème que j'avais était d'avoir ce processus d'animation retardé - de sorte qu'il commence après 20 secondes, assez de temps pour qu'un fichier audio joue.

- (void) firstAnimation { 
      UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear; 

      [UIView animateWithDuration:1.0 delay:10.0 options:options animations:^ 
      { 
        myImage.alpha = 0.0; 
        myImage.alpha = 1.0; 

      } 

        completion:^(BOOL finished){ 

        [self secondAnimation]; 
      } 
      ]; 

    } 

Merci encore pour toute aide. J'ai cherché des exemples de code et de tutoriels mais tout ce que j'ai trouvé est fondamentalement ce que je fais dans le code ci-dessus.

Répondre

1

Je pense que vous devez définir la valeur initiale de votre alpha en dehors du bloc d'animation et seulement la valeur que vous voulez animer à l'intérieur du bloc.

UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear; 
myImage.alpha = 0.0; 
[UIView animateWithDuration:1.0 delay:10.0 options:options animations:^ 
     { 
       myImage.alpha = 1.0; 

     } 
+0

merci! ça a bien marché. Savez-vous comment je pourrais mettre cela sur une boucle infinie? merci encore – hanumanDev

+0

Vous devriez pouvoir y parvenir en enchaînant les fonctions comme vous l'avez fait plus haut. Le premier anim appelle le second qui appelle le premier, etc. Plus compliqué que cela et je suggérerais d'utiliser un NSTimer pour appeler la fonction firstanimation toutes les X secondes pour l'infini. – Ben

+0

ok, merci. peut-être que je devrais utiliser un NSTimer parce que je veux que les animations commencent après la lecture d'un clip audio. – hanumanDev

1
animateImageWithCount:(int)aCount{ 
    if(aCount >= [imageArray count]){ 
     NSLog(@"Done all images"); 
     return; 
    } 

    UIImage *myImage = [ImageArray objectAtIndex:aCount]; 
    UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear; 

    myImage.alpha = 0.0; 
    [UIView animateWithDuration:1.0 delay:10.0 options:options animations:^{ 
     myImage.alpha = 1.0; 
    } 
    completion:^(BOOL finished){ 
     [self animateImageWithCount:(aCount+1)]; 
    }]; 
} 
+0

Wow. Tu m'as sauvé un peu de temps. J'ai cherché des heures pour trouver une solution et la tienne est belle. Je vous remercie! – CoderMarkus