2013-03-19 106 views
0

我有個任務,使簡單的動畫的iPad2喜歡這裏:http://www.subaru.jp/legacy/b4/index2.html大圖像動畫快速

用戶只需滑動左,右和視覺對象旋轉通過它的垂直軸。我認爲最簡單的方法是使用cocos2d中的UIImage或CCSprite,將圖像設置爲陣列並根據觸摸來更改圖像。計劃的圖像大小爲1024x768(全屏),每秒至少15-20幅圖像以獲得更流暢的動畫效果。問題是:是否有可能通過這種方式實現真正的平滑?對於這樣的事情,iPad2的真正限制是什麼。如果它在界限之後,我怎麼能以其他方式實現這種行爲?

+0

可能您可以使用視頻並在AVPlayerLayer中播放它嗎? – Vladimir 2013-03-19 10:34:55

+0

但是,如何將視頻鏈接到觸摸並且能夠快速響應觸摸?我的意思是說用戶可以緩慢或快速地滑動,並且動畫速度需要與觸摸速度完全匹配。 – Alex 2013-03-19 10:46:24

+0

你不需要鏈接視頻觸摸。將視頻放置在一個圖層中,並在其上添加一個空的圖層,該圖層可以觸摸。在該層內進行觸摸處理,對視頻中的人來說是一個陰影。 – YvesLeBorg 2013-03-19 13:15:12

回答

2

好吧,讓我們運行數學:

15倍1024×768每秒圖像。如果使用4096x4096紋理圖集,則可將它們全部放入單個紋理圖集。這涵蓋了1秒。

這意味着你需要每秒載入另一個紋理圖集。內存中至多可以有2-3個這樣的紋理地圖集(保守地,每個都使用64 MB內存)。

真正實現此目的的唯一方法是使用.PVR.CCZ紋理圖集來增加加載時間並減少內存使用量。您仍然需要經常加載/卸載紋理地圖集(幾秒鐘內)。所以你應該做一個測試,加載4k.PVR.CCZ貼圖的速度有多快,以及是否會影響速度。如果這太慢(我懷疑它會),你將不得不使用1024x1024 .pvr.ccz紋理(單幀),並提前使用CCTextureCache異步方法緩存4個或更多的紋理(和解開當前替換的紋理),以便在後臺加載新紋理並且不會影響動畫速度。

由於這是關於旋轉的,所以您必須確保至少有一個更好的兩個幀都在緩存中。由於旋轉可能以各種速度發生,因此用戶可能仍會遇到延遲。

您應該儘可能地減小紋理的顏色位深度,直到它影響圖像質量太多。

如果你應用書中的每一個技巧,我相信它是可行的。但它不會像「播放動畫」那樣簡單,並且可以用它來完成。如果這就是你想知道的。

1

我以前做過這樣的事情,但是使用帶有UIWebView控件的JS庫,庫名爲UIZE,請檢查這個example。我用它大小約爲1024×655的100張圖像,非常流暢。

從尺寸下載庫,組織文件夾,如下:

  • rotation3d
    • 例如
      • 的3D旋轉viewer.html
  • 圖片
    • 圖片文件
  • JS
    • 的庫文件。

在您的Objective-C類,使用下面的代碼在UIWebView中加載HTML頁面:

NSString *path = [[NSBundle mainBundle] 
        pathForResource:@"3d-rotation-viewer" 
        ofType:@"html" 
        inDirectory:@"rotation3d/example" ]; 

NSURL *urls = [NSURL fileURLWithPath:path]; 

NSString *theAbsoluteURLString = [urls absoluteString]; 

NSString *queryStrings = @"?param1=something";//Parameters to pass to your html page 

NSString *absoluteURLwithQueryString = [theAbsoluteURLString stringByAppendingString: queryStrings]; 

NSURL *finalURL = [NSURL URLWithString: absoluteURLwithQueryString]; 

NSURLRequest *request = [NSURLRequest requestWithURL:finalURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:(NSTimeInterval)10.0 ]; 

[webViews loadRequest:request]; 
+0

謝謝!但我從來沒有做過這樣的事情,所以你可以多解釋一下嗎?我如何在iOS項目中使用這個庫? – Alex 2013-03-19 11:02:00