0

image_1 から image_5000 までのラベルが付いた約 5,000 枚の画像がありますが、各画像を循環して繰り返すアニメーションを作成するにはどうすればよいですか? これは iPhone アプリケーションであり、個人的に使用するためのものです。どんな助けも大歓迎です。

これが私が使用しているコードです。なぜ機能しないのですか。

 //.h
@interface ViewController : UIViewController{
IBOutlet UIImageView *imageView;
int i;
}
@end

 - (void)viewDidLoad
{

i = 0;
[NSTimer scheduledTimerWithTimeInterval:0.5
                                 target:self
                               selector:@selector(loop) 
                               userInfo:nil
                                repeats:YES];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)loop{
if (i<MAX_IMAGES) {

    imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"image_%d.bmp",i]];
    NSLog(@"Image:%d",i);
        i+=1;
    if (i >= MAX_IMAGES) {
        i = 1;
    }
  }
}
4

4 に答える 4

1

NSTimer を使用して、一度に画像を UIIMageView にロードします。そうすれば、画像変更の間隔を制御し、メモリ使用量を最小限に抑えることができます。サンプルコードが必要な場合はお知らせください。

于 2012-04-16T02:46:16.490 に答える
1

これは、自動バージョンを使用するには画像が多すぎるため、CADisplayLinkを使用して自分で実装する必要があります。表示リンク関数では、画像ビューの画像を次の画像に交換する必要があります。わからない場合は、Web 上で CADisplayLink を使用する方法に関するチュートリアルがたくさんあります ;)。

于 2012-04-16T02:07:01.813 に答える
1

単純なアプローチの例を次に示します。メモリの問題が発生する可能性がありますが、イメージ セットを確認しないと、それで十分かどうかを判断するのは困難です。

UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.frame];

NSMutableArray *images = [NSMutableArray arrayWithCapacity:5000];
for(size_t i = 0; i <= 5000; ++i) {
    [images addObject:[UIImage imageNamed:[NSString stringWithFormat:@"image_%d", i]]];
}

imageView.animationImages = images;
imageView.animationDuration = 250.0;
imageView.animationRepeatCount = 0;

[imageView startAnimating];
于 2012-04-16T02:08:25.140 に答える
0

Cocos2d を使用して見ることができます。ただし、5000枚の画像を処理できるかどうかはわかりません。

5000枚の画像は映画のように聞こえます。その角度からアプローチすることを考えたことはありますか?

于 2012-04-16T07:00:43.207 に答える