0

一連の画像をアニメーション化する方法ですが、正確には 300 という大量の画像があります。

 Background.animationImages = [NSArray arrayWithObjects:    
                                  [UIImage imageNamed:@"001.jpg"],
                                  [UIImage imageNamed:@"002.jpg"],
                                  [UIImage imageNamed:@"003.jpg"],
                                  [UIImage imageNamed:@"004.jpg"],
                                  [UIImage imageNamed:@"005.jpg"],
                                  [UIImage imageNamed:@"006.jpg"],
                                  [UIImage imageNamed:@"007.jpg"],
                                  [UIImage imageNamed:@"008.jpg"],
                                  [UIImage imageNamed:@"009.jpg"],
                                  [UIImage imageNamed:@"010.jpg"],
                                  nil];

入力して300まで行きたくないのですが、これに対する解決策はありますか?これにループを使用できますか?

4

3 に答える 3

5

ループは次のようになります

NSMutableArray *animationImages = [[NSMutableArray alloc] initWithCapacity:300];

for (int i = 1; i <= 300; i++) {
    NSString *imageName = [NSString stringWithFormat:@"%03d.jpg", i];
    [animationImages addObject:[UIImage imageNamed:imageName]];
}

Background.animationImages = animationImages;

フォーマット指定子%03dは、最小フィールド幅が 3 になるように 0 で埋められた整数を意味します。

しかし

画像のサイズによっては、メモリが不足してアプリが終了する可能性があります。


サイドノート

BackgroundObjective-C の変数の名前としてはあまり適切ではありません。規則では、変数名は小文字で始め、その後はキャメル ケースを使用します。

于 2012-04-07T09:14:36.723 に答える
4
NSMutableArray *array = [NSMutableArray array];

for (int i = 0; i < 300; i++)
{
    NSString *imgName = [NSString stringWithFormat:@"%03d.jpg", i];
    UIImage *img = [UIImage imageNamed:imgName];
    [array addObject:img];
}

Background.animationImages = array;
于 2012-04-07T09:13:11.227 に答える
1

GIF 画像を使用してアニメーションを再生します。OpenGLES で GIF ファイルを再生することは良い方法であり、アニメーションを再生する最良の方法であると私は信じています。

Git リンクに従ってください: https://github.com/jamesu/glgif

于 2012-04-07T12:20:01.143 に答える