追記(2008/10/06): サンプルプロジェクトを作った.エントリーと異なる部分もあるが許してください.
具体的な描画部
@implementation TransitionView
…
- (void)drawRect:(NSRect)rect {
if ([transition isAnimating]==YES) {
[transition draw:[[[self selectedTabViewItem] view] bounds]];
}
}
…
@end
アニメーション中はtransition側で描かせます
@implementation Transition
…
- (BOOL)isAnimating {
return (_animation!=nil);
}
…
- (void)draw:(NSRect)viewRect {
NSRect rect = [_delegate bounds];
float time = [_animation currentValue];
[_transitionFilter setValue:[NSNumber numberWithFloat:time] forKey:@"inputTime"];
CIImage * outputCIImage = [_transitionFilter valueForKey:@"outputImage"];
[outputCIImage drawInRect:rect fromRect:NSMakeRect(0, rect.size.height, rect.size.width, -rect.size.height) operation:NSCompositeSourceOver fraction:1.0];
}
…
@end
NSAnimationのcurrentValueにてtime変数値を作成.
そのtime変数値をCIFilterに入れて中間画像を得ています.
完結.
0 件のコメント:
コメントを投稿