簡體   English   中英

iPhone SDK:帶有“animationImages”問題的長動畫

[英]iPhone SDK: Long animations with "animationImages" problem

很長一段時間以來,我一直在嘗試在 xcode 中設置一個 animation,起初我開始嘗試制作 100 個 1000x1000 png 的動畫,但是這些圖像對於 iphone 來說太大了,現在我正在嘗試制作 100 個 320x480 png 的動畫,看起來動畫直到大約 40 幀,然后應用程序崩潰,那么,還有 animation 的任何其他方法不會這樣做嗎? 這可能只是因為這段代碼加載了太多的圖像,iphone 無法處理,我可以使用其他方法讓應用程序停止崩潰嗎? 或者我可以進一步優化這段代碼嗎? (順便說一句,我是 iphone 平台的新手,所以在回答時請記住)

- (IBAction)startClick1:(id)sender{

spud123.animationImages = [NSArray arrayWithObjects:
                          [UIImage imageNamed: @"spud1230000.png"],
                          [UIImage imageNamed: @"spud1230001.png"],
                          [UIImage imageNamed: @"spud1230002.png"],
                          [UIImage imageNamed: @"spud1230003.png"],
                          [UIImage imageNamed: @"spud1230004.png"],
                          [UIImage imageNamed: @"spud1230005.png"],
                          [UIImage imageNamed: @"spud1230006.png"],
                          [UIImage imageNamed: @"spud1230007.png"],
                          [UIImage imageNamed: @"spud1230008.png"],
                          [UIImage imageNamed: @"spud1230009.png"],
                          [UIImage imageNamed: @"spud1230010.png"],
                          [UIImage imageNamed: @"spud1230011.png"],
                          [UIImage imageNamed: @"spud1230012.png"],
                          [UIImage imageNamed: @"spud1230013.png"],
                          [UIImage imageNamed: @"spud1230014.png"],
                          [UIImage imageNamed: @"spud1230015.png"],
                          [UIImage imageNamed: @"spud1230016.png"],
                          [UIImage imageNamed: @"spud1230017.png"],
                          [UIImage imageNamed: @"spud1230018.png"],
                          [UIImage imageNamed: @"spud1230019.png"],
                          [UIImage imageNamed: @"spud1230020.png"],
                          [UIImage imageNamed: @"spud1230021.png"],
                          [UIImage imageNamed: @"spud1230022.png"],
                          [UIImage imageNamed: @"spud1230023.png"],
                          [UIImage imageNamed: @"spud1230024.png"],
                          [UIImage imageNamed: @"spud1230025.png"],
                          [UIImage imageNamed: @"spud1230026.png"],
                          [UIImage imageNamed: @"spud1230027.png"],
                          [UIImage imageNamed: @"spud1230028.png"],
                          [UIImage imageNamed: @"spud1230029.png"],
                          [UIImage imageNamed: @"spud1230030.png"],
                          [UIImage imageNamed: @"spud1230031.png"],
                          [UIImage imageNamed: @"spud1230032.png"],
                          [UIImage imageNamed: @"spud1230033.png"],
                          [UIImage imageNamed: @"spud1230034.png"],
                          [UIImage imageNamed: @"spud1230035.png"],
                          //and so on to 100
                          nil];

[spud123 setAnimationRepeatCount:1];
spud123.animationDuration =5.7;
[spud123 startAnimating];

}

Ps:我試過 NSTimer,但我無法讓它停止重復 animation

這不是 animation 問題,而是設計問題。

首先,只需一步 cack 並計算您的應用程序的 memory 要求:解壓縮時,每個 PNG 文件使用 614400 字節。 所以其中一百個使用 61440000 字節:超過 60 兆字節。 對手機的期望有點高。

如果你真的需要為每一幀顯示不同的圖像,你應該使用視頻。 視頻有很多壓縮圖片的技術,在順序顯示很多大圖的時候減少處理和memory的要求。

如果您需要將其設置為具有更多控制權的 animation,我建議您需要分析正在移動的內容並僅為其制作動畫 - 繪制單個背景,然后在其上制作較小的圖像動畫。

最后,如果這種方法不起作用,您將不得不學習 OpenGL以獲得所需的性能。

在不了解您的應用程序的更多信息的情況下,很難提供建議。

您需要仔細考慮您的應用程序 memory 使用,但只是為了讓您知道選項,我已經成功使用了基於http://www.modejong.com/iPhone/PNGAnimatorDemo.zip修改的 class 這可以,在第一代上iPad 硬件,處理 15fps 全屏 (1024x768) png 動畫。 但請注意您的應用程序包大小。 這絕對不是大多數應用程序的最佳選擇。

通常 animation 中的幀非常相似。 因此,一種可能的解決方案是加載一些圖像……然后使用 OpenGL 為它們制作動畫。這對於彈跳球來說效果很好。 不確定您正在為哪些圖像設置動畫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM