2007年7月4日水曜日

NSViewからNSVIewへのトランジションをCoreImageで/ 6

追記(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 件のコメント: