hI,
I am workng on animation using CALayer and CAPath.
Here I am animating an Image from top to bottom of screen.I gave starting and ending position for
the animation.Now, I want to get position during the animation.
Sample Code:
- (void)onTimer
{
CGImageRef imageRef = [[UIImage imageNamed:@"apple.png"] CGImage];
int startX = round(random() % 460);
double speed = 1 / round(random() %100) + 1.0;
layer = [CALayer layer];
layer.name = @"layer";
layer.contents = (id)imageRef; // cached image
layer.frame = CGRectMake(startX, self.view.frame.size.height+10, CGImageGetWidth(imageRef), CGImageGetHeight(imageRef));
[mView.layer addSublayer:layer];
path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, startX, -100);
CGPathAddLineToPoint(path, NULL, startX, self.view.frame.size.height+10);
CAKeyframeAnimation *animation= [CAKeyframeAnimation animationWithKeyPath:@"position"];
animation.delegate=self;
animation.duration= 10*speed;
animation.autoreverses=NO;
animation.path=path;
animation.repeatCount = 0;
animation.removedOnCompletion=YES;
animation.calculationMode = kCAAnimationLinear;
[layer addAnimation:animation forKey:@"position"];
CGPoint point= CGPathGetCurrentPoint(path);
}
In this I used "CGPathGetCurrentPoint" method but it did not work. Also used
presentationLayer method of CALayer but uit also did not work in this case.
Can anyone suggest the code to get the position during animation
thanks in advance
質問する
1102 次
2 に答える
2
レイヤーのpresentationLayerのプロパティを見ることで、アニメーション中に画面に表示されるものの値を取得できます。
于 2011-08-10T23:11:14.717 に答える
1
Core Animation は、このために設計されたものではありません。その仕事は、プロパティ アニメーションを処理することであり、公開することではありません。
アニメーション中の位置を知りたい場合は、Core Animation を使用せずにすべてのアニメーションを自分で行う必要があります。
CGPathGetCurrentPoint()
CGPath
Core Animation のキーフレーム アニメーション パスではなく、インスタンスのコントロール ポイントにアクセスする関数です。
于 2011-05-04T03:33:06.750 に答える