0

次のようなコード: ビューコントローラーに 3 つのアニメーションを保存しましたが、 - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag が呼び出されると、 anim のアドレスがそれらのいずれとも同じではないことがわかりました。なぜ?

- (void) redoAni
{
    circleHalfCaloryMask.alpha = 1;
    circleHalfTimeMask.alpha = 1;
    circleHalfStopWatchMask.alpha = 1;


    //[circleHalfCalory removeFromSuperview];
    //circleHalfCalory.alpha = 0;
    [circleHalfCaloryMask.layer addAnimation:rotate3 forKey:@"rotate3"];
    [circleHalfStopWatchMask.layer addAnimation:rotate2 forKey:@"rotate2"];
    [circleHalfTimeMask.layer addAnimation:rotate1 forKey:@"rotate1"];
}



    - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
    {
        if (anim == rotate1)
        {
            circleHalfTimeMask.alpha = 0;
        }
        else if (anim == rotate2)
        {
            circleHalfStopWatchMask.alpha = 0;
        }
        else if (anim == rotate3)
        {
            circleHalfCaloryMask.alpha = 0;
        }
        else
        {
        }
    }

gdb で:

rotate1 CABasicAnimation *  0x07297280
rotate2 CABasicAnimation *  0x072899a0
rotate3 CABasicAnimation *  0x07297d40
anim    CABasicAnimation *  0x07285010
4

1 に答える 1

1

ドキュメントには次のように記載されています。

  • (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key

アニメ

Render Tree に追加するアニメーション。オブジェクトはレンダー ツリーによってコピーされ、参照されないことに注意してください。オブジェクトに対するその後の変更は、Render Tree に反映されません。

于 2012-12-07T08:00:41.733 に答える