0

カメラを使用するアプリがあり、銃の画像がオーバーレイされ、発射とリロードのボタンがあります。Retina iPad と iPhone では、発射アニメーションでは約 1 秒で 30 枚の画像が循環し、リロード アニメーションでは 2 秒で 41 枚の画像が循環します。すべての画像は 1920 x 1080 で、iPhone では 1000 x 533 です。たとえば、ファイア ボタンがタップされたときに .png を切り替えるには、PlayViewController.m ファイルでこれを使用します。

- (IBAction)fire:(id)sender {

// Play the firing animation for the rifle, enable reload button

fireButton.enabled = NO;
type.animationImages  = gunanimload;
type.animationDuration = 1.0;
type.animationRepeatCount = 1;
reloadButton.enabled = YES;
[type startAnimating];

viewDidLoad メソッドで、配列を作成し、画像をロードします。

- (void)viewDidLoad
{
[super viewDidLoad];

UIImage* img1 = [UIImage imageNamed:@"rev0001.png"];

... x30

gunanimload = [NSArray arrayWithObjects:img1, ... x30, nil];

}

ビューのロード時に配列をロードする必要がありますが、Fire ボタンがタップされたときにまだロードしているようです。この遅延を解消するにはどうすればよいですか? または、火を再生してアニメーションをリロードする (比較的単純な) 代替手段はありますか?

4

1 に答える 1

1

UIImage imageNamed メソッドは、表示に必要になるまで画像をロードしません。事前に画像をプリロードする方法があります。

詳細については、こちらをお読みください: UI スレッドで CGImage/UIImage を遅延読み込みするとスタッターが発生する

iOS での非遅延画像読み込み

于 2012-09-04T11:42:04.970 に答える