2011-04-20 7 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()은 코어 애니메이션 키 프레임 애니메이션 경로가 아닌 CGPath 인스턴스의 제어점에 액세스하는 기능입니다.

2

레이어의 presentationLayer에서 속성을 보면 애니메이션 중에 화면에 표시되는 값을 얻을 수 있습니다.

관련 문제