は、コードの次の部分を考慮してください:機能スリープ(の使用の違い)および[[NSRunLoop currentRunLoop] runUntilDate]
iは、アニメーションを作成する関数を呼び出す最初のもので。私はアニメーション
- (void)animationMethod
{
CAKeyframeAnimation *myAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
CGMutablePathRef curvedPath = CGPathCreateMutable();
CGPathMoveToPoint(curvedPath, NULL, start.x, start.y);
CGPathAddCurveToPoint(curvedPath, NULL, fcp.x, fcp.y, scp.x , scp.y, end.x, end.y);
myAnimation.path = curvedPath;
myAnimation.duration = flight_duration;
myAnimation.removedOnCompletion = NO;
myAnimation.delegate = self;
myAnimation.fillMode = kCAFillModeForwards;
[myAnimation setValue:identifier forKey:@"id"];
[flyingBug addAnimation:myAnimation forKey:@"bug_flight"];
CGPathRelease(curvedPath);
}
を作成し、三番目は、私はすべてがOKに起こっているをチェックするために使用するデリゲートメソッドである第二一
start:;
[self animationMethod];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:3]];
//sleep(3);
goto start;
:私は、一定の時間間隔であることを実行します。
- (void)animationDidStart:(CAAnimation *)anim
{
NSLog(@"ANIMATION DID START");
}
私はNSRunLoop
を使用するときだから、デリゲートメソッドが呼び出され、すべての権利動作しますが、私はsleep(3)
機能を使用しようとするならば、デリゲートメソッドがコールを取得していませんed。
私の質問:
1)あなたはNSRunLoopと睡眠()との違いを説明していただけますか?なぜsleep()が使われるとデリゲートメソッドが呼び出されないのですか?
2)おそらく、使用法が優れている3番目の方法がありますか?