J'essaie d'apprendre l'animation de base pour l'iOS/iPhone. Ma couche racine contient beaucoup de sous-couches (sprites) et elles devraient tourner quand elles sont retirées ...Comment supprimer un objet CALayer de animationDidStop?
Mon plan consistait à ajouter une animation tournante, puis à supprimer l'image-objet lorsque l'animationDidStop est invoquée. Le problème est que la couche de sprite n'est pas un paramètre de animationDidStop!
Quelle est la meilleure façon de trouver la couche d'image-objet spécifique à partir de animationDidStop? Y a-t-il une meilleure façon de faire tourner le sprite quand il est retiré? (Idéalement, je voudrais utiliser kCAOnOrderOut mais je ne pouvais pas le faire fonctionner)
-(void) eraseSprite:(CALayer*)spriteLayer {
CABasicAnimation* animSpin = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
animSpin.toValue = [NSNumber numberWithFloat:2*M_PI];
animSpin.duration = 1;
animSpin.delegate = self;
[spriteLayer addAnimation:animSpin forKey:@"eraseAnimation"];
}
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag{
// TODO check if it is an eraseAnimation
// and find the spriteLayer
CALayer* spriteLayer = ??????
[spriteLayer removeFromSuperlayer];
}
Cela devrait être la réponse, car celle acceptée ne fonctionne pas sur plusieurs sprites comme la question l'indique. – Ian1971
+1 réponse correcte ... – Leena
Bon, j'ai maintenant vérifié cette réponse comme la bonne. – ragnarius