2011-04-20 52 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上的屬性,可以獲得在動畫期間在屏幕上看到的值。