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