1
 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
4

2 に答える 2

2

レイヤーのpresentationLayerのプロパティを見ることで、アニメーション中に画面に表示されるものの値を取得できます。

于 2011-08-10T23:11:14.717 に答える
1

Core Animation は、このために設計されたものではありません。その仕事は、プロパティ アニメーションを処理することであり、公開することではありません。

アニメーション中の位置を知りたい場合は、Core Animation を使用せずにすべてのアニメーションを自分で行う必要があります。

CGPathGetCurrentPoint()CGPathCore Animation のキーフレーム アニメーション パスではなく、インスタンスのコントロール ポイントにアクセスする関数です。

于 2011-05-04T03:33:06.750 に答える