Как удалить объект CALayer из animationDidStop?

Я пытаюсь изучить базовую анимацию для iOS / iPhone . Мой корневой слой содержит множество подслоев (спрайтов), и они должны вращаться, когда они удаляются ...

Я планировал добавить вращающуюся анимацию, а затем удалить спрайт при вызове animationDidStop. Проблема в том, что слой спрайта не является параметром animationDidStop!

Как лучше всего найти конкретный слой спрайта из animationDidStop? Есть ли лучший способ заставить спрайт вращаться после его удаления? (в идеале я хотел бы использовать kCAOnOrderOut, но у меня не получалось заставить его работать)

-(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]; 
}
7
задан ragnarius 13 June 2011 в 12:57
поделиться