2012-04-16 60 views
0

我獲得了大約5000張圖像,標記爲image_1到image_5000我如何創建一個動畫循環播放每個圖像然後重複? 這是一個iPhone應用程序,僅供我個人使用,非常感謝任何幫助。來自圖像集的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; 
    } 
    } 
} 
+0

我覺得我犯了一個非常愚蠢的錯誤,所以不要太苛刻我只有15 – Jordan 2012-04-16 03:15:00

+0

我應該重置爲0而不是1? – user523234 2012-04-16 03:56:20

+0

沒有圖像開始於1 – Jordan 2012-04-16 06:10:45

回答

1

我會使用NSTimer一次加載圖像到一個UIIMageView。這樣,您可以控制圖像更改之間的時間間隔並最大限度地減少內存使用量。讓我知道你是否需要示例代碼。

+0

我採取了這種方法,但我得到了非常奇怪的結果。首先,我已經準備好了10次圖像,並且它們都是按順序排列的。但是當我運行應用程序image_3和image_2交換。我只在10張圖像的小範圍內測試它的工作和我真的很困惑,我還在剎車點看看int是什麼,它是111594320 ??? – Jordan 2012-04-16 02:53:49

1

這是太多的圖像使用自動版本,所以你將不得不使用CADisplayLink實現它自己。在您的顯示鏈接功能中,您應該將圖像視圖的圖像交換到下一張圖像。如果你不明白,有很多關於如何在網絡上使用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 2012-04-16 02:23:56

+0

請注意,我在這裏使用的是'UIImageView',而不是直接在'UIImage'上使用動畫屬性。他們兩人可能都有平臺限制;我從來沒有創建過500張圖片的動畫UIImageView,少了5000張。 – warrenm 2012-04-16 02:41:29

+0

哎呦,你是對的!我在看UIImage,而不是UIImageView – borrrden 2012-04-16 02:43:21

0

你可以看看使用Cocos2d。不知道它是否可以處理5000張圖片。

5000張圖像聽起來很像電影。你有沒有想過從這個角度來看待它?