Question

Je voudrais animer plusieurs morceaux pour un jeu et je voudrais avoir ces pièces se déplacent dans différentes directions donc ma méthode actuelle d'animer une vue entière ne sera plus de travail.

Je me demande quelle est la meilleure pratique pour animer plusieurs éléments à la fois. (Notez que je suis rendu en 2D donc je ne suis pas actuellement intéressé par Soltuions 3d.)

Merci!

Était-ce utile?

La solution

Il est relativement facile d'animer plusieurs objets 2-D à la fois. Il y a deux façons que vous pouvez aller à ce sujet: UIViews ou animez animeront CALayers. Dans mes tests, je l'ai trouvé peu de différence dans la performance lors de l'animation les deux (les deux semblent soutenir ~ 50 objets qui se déplacent en même temps à 60 FPS sur l'iPhone).

Coordonner les animations d'une série de UIViews, vous aurez envie d'envelopper toute modification de la géométrie de la vue dans un BEGIN / COMMIT bloc d'animation:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:ANIMATIONDURATIONINSECONDS];

view1.frame = CGRectMake(newX1, newY1, view1Width, view1Height); 
view2.frame = CGRectMake(newX2, newY2, view2Width, view2Height); 
// Add other views here

[UIView commitAnimations];

coordonnera le mouvement de deux ou plusieurs vues en ligne droite jusqu'à leur nouvelle position sur une durée de quelques secondes ANIMATIONDURATIONINSECONDS. Si vous voulez que les vues de se déplacer indépendamment les uns des autres, créer des blocs séparés d'animation pour chacun d'eux.

Pour plus de contrôle sur vos animations, ou pour créer des multi-plateforme Mac / code interface iPhone, vous pouvez utiliser Core Animation CALayers. CALayers animés par défaut, en réglant

layer.position = CGPointMake(newX, newY);

votre couche va animer automatiquement à la nouvelle position. Notez que par défaut la position de la couche est par rapport à son centre, vous pouvez changer cela à la position d'origine normale en définissant sa propriété Anchorpoint à 0,0.

Vous pouvez coordonner les animations de calque à l'aide d'un CATransaction:

[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:ANIMATIONDURATIONINSECONDS] forKey:kCATransactionAnimationDuration];      
layer1.position = CGPointMake(newX1, newY1);
layer2.position = CGPointMake(newX2, newY2);
[CATransaction commit];

Pour plus d'animations avancées, vous pouvez créer CABasicAnimations et CAKeyframeAnimations et appliquer les à vos couches pour les déplacer le long des chemins complexes avec calendrier précis et une accélération / décélération.

Autres conseils

Avez-vous étudié le projet Cocos2D-iphone?

Je trouve qu'il est très facile à utiliser et prend beaucoup de travail de vos mains.

Cocos2D iPhone

Il fait également beaucoup d'animation et vous pouvez créer des séquences d'animations que vous pouvez lier ensemble.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top