2012-04-16 13 views
0

Iveにはimage_1からimage_5000までの約5000個の画像があります。各画像を繰り返し再生するアニメーションを作成するにはどうすればいいですか? これはiPhoneアプリケーションであり、私の個人的な使用のためだけであり、どんな助けも大歓迎です。iphone animation from image set

ここで私が使用しているコードは、なぜ動作していないのですか?

//.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; 
    } 
    } 
} 
+0

私は本当に愚かな間違いをしたように感じるので、あまりにも過酷ではありませんImのみ15 – Jordan

+0

1ではなく0にリセットする必要がありますか? – user523234

+0

イメージは1から始まっていません – Jordan

答えて

1

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

+0

私はこのアプローチを取ったが、私は本当に奇妙な結果を得る。 私はすべての準備ができている画像を10回チェックして、それらはすべて順番になっています。私はアプリを実行すると、image_3とimage_2がスワップされます。私はブレーキのポイントに置いてintが何であったかを見るために111594320を見ましたか? – Jordan

1

これは、自動バージョンを使用するにはあまりにも多くの画像であるので、あなたは、CADisplayLinkを使用して、それを自分で実装する必要があります。表示リンク機能では、画像ビューの画像を次の画像にスワップする必要があります。あなたが理解していない場合は、Web上でCADisplayLinkを使用する方法についてのチュートリアルがたくさんあります。

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]; 
+0

これらのプロパティから「アニメーション」(イメージ、期間、repeatCount)を差し引いたものを意味すると思います。アニメーション化されたイメージコンストラクタは1024のイメージしか許さないので、それが問題になるかどうかは分かりません。 – borrrden

+0

'UIImage'ではアニメーションプロパティではなく' UIImageView'を使用しています。両方ともプラットフォームの制限があるかもしれません。私は確かに、500枚の画像でアニメーション化された「UIImageView」を作成したことはありません。5000よりはるかに少ないです。 – warrenm

+0

あなたは正しいです! UIImageViewではなくUIImageViewを見ていた – borrrden

0

Cocos2dを使用して見ることができます。それは5000画像を処理することができますかどうかは分かりません。

5000画像は映画のように似ています。あなたはその角度からそれに近づくことを考えましたか?