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"];
私のベジェパスは閉じており、4つの位置ポイントから「8」を形成します。私のtimerFunctionを使用して、毎秒CAEmitterLayerの位置を取得しようとします。そのために私は使用します
-(CGPoint)getEmitterPosition
{
return fireEmitter.emitterPosition;
}
エミッタークラスで
CGPoint emitterPosition = [self.ParticleEmitterView getEmitterPosition];
NSLog(@"%f / %f", emitterPosition.y, emitterPosition.y);
タイマー機能から。
しかし、アニメーションが実行されているとき、エミッターが画面上で実行されている間、コンソールはすべての呼び出しで同じ位置を吐き出します。
それはなぜですか。また、アニメーション化されたCAEmitterLayer / Cellのエミッター位置を取得するにはどうすればよいですか?