2007年7月4日水曜日

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

追記(2008/10/06): サンプルプロジェクトを作った.エントリーと異なる部分もあるが許してください.



@interface Transition : NSObject {

NSAnimation *_animation;
id _delegate;

}

#define TRANSITION_DURATION 0.75

@implementation Transition

- (void)reset {
[_initialImage release];
[_finalImage release];
[_transitionFilter release];
[_animation release];
_initialImage = nil;
_finalImage = nil;
_transitionFilter = nil;
_animation = nil;//これの有無でアニメーション中かどうかを判定していします 6参照
}
- (void)start {

//フィルタの作成 4を参照.
...
if(_transitionFilter!=nil) {
_animation = [[TransitionAnimation alloc] initWithDuration:TRANSITION_DURATION animationCurve:NSAnimationEaseInOut];
[_animation setDelegate:_delegate];
[_animation startAnimation];
[self reset];
}
}


_delegateはTransitionViewのインスタンス.


@interface TransitionAnimation : NSAnimation
@end
@implementation TransitionAnimation
- (void)setCurrentProgress:(NSAnimationProgress)progress {
[super setCurrentProgress:progress];
[[self delegate] display]; //[self delegate]==transitionView
}
@end

0 件のコメント: