我有一个带有 CAEmitterCell 的动画 CAEmitterLayer 并且动画运行良好
fireEmitter = (CAEmitterLayer*)self.layer;
fireEmitter.emitterPosition = CGPointMake(50, 50);
fireEmitter.emitterSize = CGSizeMake(10, 10);
CAEmitterCell* fire = [CAEmitterCell emitterCell];
...
[fire setName:@"fire"];
CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"emitterPosition"];
anim.path = theBezierPath.CGPath;
anim.calculationMode = kCAAnimationCubicPaced;
anim.repeatCount = HUGE_VALF;
anim.duration = 12.0;
[self.layer addAnimation:anim forKey:@"fire"];
我的贝塞尔路径是封闭的,并在四个位置点中形成一个“8”。使用我的 timerFunction 我尝试每秒获取 CAEmitterLayer 的位置。为此我使用
-(CGPoint)getEmitterPosition
{
return fireEmitter.emitterPosition;
}
在发射器类和
CGPoint emitterPosition = [self.ParticleEmitterView getEmitterPosition];
NSLog(@"%f / %f", emitterPosition.y, emitterPosition.y);
从定时器功能。
但是当动画运行时,控制台每次调用都会吐出相同的位置,尽管发射器在屏幕上运行。
为什么会这样,我怎样才能获得动画 CAEmitterLayer/Cell 的发射器位置?