勝ち状態と負け状態があるゲームを作っています。状態ごとに、2 ~ 3 秒の短いアニメーションを表示したいと思います。最初のアニメーションは 60 個の PNG で構成され、レートは 30 fps であり、2 番目のアニメーションは 80 個の PNG で構成され、同じく 30 fps です。私はさまざまな方法を試し、解決策を広範囲に検索しましたが、見つけ続けている上位 2 つの結果は、UIImageView animationImages と Core Animation を使用することです。UIImageView を使用すると、シミュレーターで非常にうまく機能しますが、デバイスで初めて実行するのに非常に時間がかかります。これは、画像をメモリにロードする必要があるためだと思います。「imageNamed」を使用して animationImages 配列を設定していますが、アニメーションが初めて呼び出されたときにレンダリングする必要があると思いますか? アプリの読み込み時にそれらを事前にレンダリングしようとしましたが、これでうまくいくようです。しかし、これらすべての画像を事前にレンダリングするには 10 秒近くかかり、ユーザー フレンドリーではありません。Core Animation の使用も歓迎しますが、それについての知識は非常に限られているため、詳細な説明をいただければ幸いです。ありがとう!
アプリの起動時にすべてをロードする必要があると言うとき、正確にはどういう意味ですか? 現時点では、アプリの読み込み時にアニメーション イメージの両方の配列を次のように初期化します。
// Create thinnestAnimation Array
thinnestAnimation = [[NSMutableArray alloc] init];
for(int i = 1; i <= 60; i++)
{
UIImage *thinImage = [UIImage imageNamed:[NSString stringWithFormat:@"ThinnestJump_%d.png", i]];
[thinnestAnimation addObject:thinImage];
}
thinAnimationImageView.animationImages = (NSArray *)thinnestAnimation;
thinAnimationImageView.animationDuration = 2.0;
thinAnimationImageView.animationRepeatCount = 1;
thinAnimationImageView は私のインターフェイスの IBOutlet であり、[thinAnimationImageView startAnimating];
画像のシーケンスをアニメーション化するときに呼び出します。これは最初の呼び出しで大幅に遅れますが、その後は問題ありません。初めて遅れるのを防ぐ方法はありますか?