2011-04-20 45 views
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 

回答

1

Core Animation不是为此设计的。它的工作是为你处理属性动画,而不是让你接触它。

如果您想在动画过程中了解它的位置,那么您需要自己动手完成所有动画,而无需使用Core Animation。

CGPathGetCurrentPoint()是一个函数,用于访问实例的控制点,而不是Core Animation关键帧动画路径。

2

通过查看图层的presentationLayer上的属性,可以获得在动画期间在屏幕上看到的值。