Как получить позицию во время анимации, которая использует CALayer и CGPath в iPhone - PullRequest
1 голос
/ 20 апреля 2011
 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

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

Вы можете получить значение того, что вы видите на экране во время анимации, посмотрев на свойства слоя presentationLayer.

1 голос
/ 04 мая 2011

Core Animation не была разработана для этого. Его задача - управлять анимацией свойств, а не подвергать ее воздействию.

Если вы хотите узнать его положение во время анимации, тогда вам нужно будет выполнить всю анимацию самостоятельно без Core Animation.

CGPathGetCurrentPoint() - это функция, которая обращается к контрольным точкам CGPath экземпляров, а не к путям анимации ключевых кадров базовой анимации.

...