2011-01-07 26 views
0

AVSynchronizedLayerを使用して、パスに沿ってCALayerの位置をアニメートしています。レイヤーのタイミングはAVPlayerItemと一致するため、レイヤーは再生中のビデオ内のアイテムを正しくトラッキングします。ムービーのタイミングと一致しないAVSynchronizedLayerサブレイヤのアニメーション

私がしたいのは、レイヤー上に別々の不透明度/回転アニメーションもありますが、ビデオから独立するタイミングが必要です。これを無効にする方法はありますか?

答えて

0

これを実行する唯一の方法は、CADisplayLinkを使用して不透明度/回転を手動でアニメーション化し、コアアニメーションを使用せずに値を補間することでした。

startTimestamp = CACurrentMediaTime(); 
CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self 
                 selector:@selector(animate:)] 
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] 
        forMode:NSDefaultRunLoopMode]; 

... 

- (void)animate:(CADisplayLink *)link {  
    float duration = 1.0; 
    float dt = (link.timestamp - startTimestamp)/duration; 

    // Done? 
    if (dt > 1.0) { 
     [link invalidate]; 
     return; 
    } 

    // Disable CoreAnimation implicit animations 
    [CATransaction begin]; 
    [CATransaction setDisableActions:YES]; 
    layer.opacity = dt; 
    [CATransaction commit]; 
} 
関連する問題