CAEmitterLayer に一種のライトセーバー アニメーションを作成させようとしています。ある点から光のビームが現れて停止するようにします。私の問題は、アニメーションの開始をスムーズに行うことができないことです。コードを実行するとすぐに、アニメーションなしで数秒が経過したように見えます。
問題の原因を見つけることができるかどうかを確認するために、コードを可能な限り削除しましたが、最も単純な場合でも問題は発生します。これは私が今持っているコードのサンプルで、まだ問題があります:
CAEmitterLayer *emitterLayer = [CAEmitterLayer layer];
emitterLayer.emitterPosition = CGPointMake(10, 10);
CAEmitterCell *emitterCell = [CAEmitterCell emitterCell];
emitterCell.contents = (id)[[UIImage imageNamed:@"LightParticle"] CGImage];
emitterCell.birthRate = 100;
emitterCell.lifetime = 10;
emitterCell.velocity = 10;
emitterLayer.emitterCells = @[emitterCell];
[self.view.layer addSublayer:emitterLayer];
明らかな何かを見逃していたに違いないと思いますが、これを何日も修正できませんでした。
birthRate を 0 に設定するとビームはスムーズに消えますが、任意の数値に戻すと再びアニメーションなしで表示されます。
ご協力ありがとうございました。