2009-07-21 8 views
0

J'ai trouvé cet extrait de code:Pourquoi devrais-je utiliser un CATransaction dans une animation?

[self setValue:direction forKey:@"currentDirection"]; 

CAKeyframeAnimation * animation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
animation.path = path; 
animation.duration = grids * gridWidth/[self speed]; 
animation.fillMode = kCAFillModeForwards; 
animation.removedOnCompletion = NO; 
animation.delegate = self; 
animation.calculationMode = kCAAnimationLinear; 
[self addAnimation:animation forKey:@"movement"]; 
self.position = destination; 

[CATransaction begin]; 
[CATransaction setValue:[NSNumber numberWithFloat:_turn_duration] 
              forKey:kCATransactionAnimationDuration]; 
eyes.position = eyeDestination; 
pupils.position = pupilDestination; 
[CATransaction commit]; 

CGPathRelease(path); 

Quel est le point d'utiliser le CATransaction ici?

Répondre

2

Pour définir la durée des deux animations implicites dans la transaction à une valeur différente de la durée de l'animation de l'image clé ci-dessus. Les animations à l'intérieur de la transaction seront exécutées sur _turn_duration secondes, tandis que l'animation de l'image clé tournera sur grids * gridWidth/[self speed] secondes.

+0

Donc, le CAKeyframeAnimation est un bloc d'animation? – Thanks

+0

Non, c'est une animation: D Une animation est explicitement ou implicitement appliquée à un objet. Vous pouvez regrouper des animations et les appliquer explicitement aux objets. Ce que vous voulez faire maintenant, c'est passer du temps avec le Core Animation Programming Guide, en particulier à partir du chapitre "Animation" et aller de l'avant. http://developer.apple.com/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/AnimatingLayers.html –