2010-10-18 1 views
4

Comment procéder pour créer une séquence d'images avec animation de base. Je voudrais:Séquence d'images d'animation de base

add image1 pendant 1 seconde puis retirer l'image

ajouter image2 pendant 2 secondes puis retirez l'image

ajouter image1 pendant 3 secondes, puis retirez

CGImageRef image1 = [self getImage1]; 
    CALayer *image1Layer = [CALayer layer]; 
    image1Layer.bounds = CGRectMake(0, 0, 480, 320); 
    image1Layer.position = CGPointMake(0, 0); 
    image1Layer.contents = (id)image1; 


    CABasicAnimation *animation1 = [CABasicAnimation animationWithKeyPath:@"animation"]; 
    animation1.repeatCount = 0; 
    animation1.duration = 2.0; 
    animation1.removedOnCompletion = YES; // i would like to remove image here 
    animation1.beginTime = AVCoreAnimationBeginTimeAtZero; 
    [image1Layer addAnimation:animation1 forKey:nil]; 

Le code ci-dessus ajoute une image mais ne l'enlève pas.

Vive

Répondre

8

La façon la plus simple est d'utiliser CABasicAnimation pour les contenus clés:

CABasicAnimation *animation = [CABasicAnimation animation]; 
animation.fromValue = (id)[UIImage imageNamed:@"image1.png"].CGImage; 
animation.toValue = (id)[UIImage imageNamed:@"image2.png"].CGImage; 
animation.duration = 1.0f; 
animation.repeatCount = HUGE_VAL; 
// animation.autoreverses = YES; 
[image1Layer addAnimation:animation forKey:@"contents"]; 

Cette animation changera infiniment le contenu de la couche entre image1 et image2. Vous pouvez définir la propriété autoreverses pour des transitions plus fluides: testez l'animation dans les deux sens et choisissez l'option qui vous plaît le mieux.

+0

Je reçois l'erreur: impossible de convertir 'CGImage *' en 'objc_object *' lors du passage d'argument. Et je voudrais ajouter environ dix images et couper directement de l'un à l'autre. Merci d'avoir répondu. – user346443

+0

désolé, vous devez explicitement cgimage à id - qui devrait corriger l'erreur. Pour animer à travers 10 images, vous pouvez utiliser CAKeyFrameAnimation d'une manière similaire à CABasicAnimation, vous aurez seulement besoin de fournir un tableau d'images à parcourir et un tableau de keyTimes pour contrôler le timing des animations – Vladimir

+0

@ Vladimir- comment puis-je jouer une séquence d'un image d'un tableau dans votre code.like ce http: //stackoverflow.com/questions/18955031/sequencing-image-using-core-animation-recieving-memory-warnings ... j'ai le même problème –