2009-10-22 16 views
1

Je voudrais de l'aide sur certaines stratégies pour séquencer certaines animations.séquençage Animation de cadres UIImageView & animation CGTransform

J'ai sous-classé UIImageView afin que je puisse écrire des actions d'animation personnalisées sur une image. Je mis en œuvre quelques méthodes à utiliser comme des actions que je pourrais faire appel à mon image exemple:

-(void)rotateAnim; //rotates the image by a few degrees using a CGAffine Transform 

-(void)numbersFlashAnim; //uses the UIImageVew.animationImages array for a 14 frame animation. 

-(void)moveLeftAnim; //uses another CGAffine Transform to change the imageView's position. 

Dans ma méthode de viewDidLoad je crée une instance de ma sous-classe UIImageView. De quelles manières existe-t-il d'appeler ces animations en séquence?

Je pensais utiliser un NSTimer pour gérer les animations, mais je ne savais pas si vous pouviez écrire un objet NSTimer pour gérer plusieurs appels de méthode.

exemple:

[imageView rotateAnim]; //when this animation is done, I want to call: 
[imageView numbersFlashAnim]; 

Je l'ai vu plusieurs questions concernant l'utilisation d'un NSTimer, mais aucun qui se rapportent spécifiquement à ce problème. Note: J'ai vu que les docs de dev sur le site d'Apple recommandent aussi l'utilisation du performSelector: withObject: afterDelay: dans certains cas, mais se demandait si cela offrirait suffisamment de flexibilité.

De plus, je l'ai déjà pris un regard sur le cadre Cocos2d, et bien que je peux utiliser leurs méthodes ~ (actions de séquence: etc,) Je choisis de résoudre ce problème avec UIKit/Fondation, etc.

Répondre

0

Utilisez-vous une animation? Je veux dire que vous pouvez faire pivoter votre image à l'intérieur [UIView beginAnimations: (NSString *) contexte d'animationID: (void *) contexte] bloc. Vous pouvez y ajouter une méthode déléguée qui sera appelée après la fin de l'animation en cours. Et là, vous pouvez appeler votre numéroFlashAnim. (Désolé pour mon anglais ;-))

+0

Oui, j'ai utilisé un bloc d'animation et enveloppé dans une méthode pour que je puisse appeler toute l'animation avec une ligne de code. Je n'ai ajouté aucun délégué. donc je vais vérifier pour ça. Puis-je également utiliser le délégué d'animation pour les animationsFrames? –

+0

Hmm. Désolé, mais je ne comprends pas ce que vous voulez dire sous animationFrames. Vous pouvez appeler la rotation de votre imageView à l'intérieur du bloc d'animation. Ensuite, vous pouvez définir une méthode avec la deuxième partie de votre animation, qui sera déclenchée après que votre animation sera terminée. – Morion