0

我的任务是为 iPad2 制作简单的动画,如下所示:http: //www.subaru.jp/legacy/b4/index2.html

用户可以简单地左右滑动,对象通过它的垂直轴视觉旋转。我认为最简单的方法是使用 cocos2d 中的 UIImage 或 CCSprite,使用图像设置数组并根据触摸更改图像。图像尺寸计划为 1024x768(全屏),每秒至少 15-20 张图像,以获得更流畅的动画效果。问题是:是否有可能以这种方式真正顺利地做到这一点?对于这样的事情,iPad2 的真正限制是什么。如果它超出了界限,我怎么能以其他方式实现这种行为?

4

2 回答 2

2

好的,让我们运行数学:

每秒 15 次 1024x768 图像。如果您使用 4096x4096 纹理图集,您可以将它们全部放入一个纹理图集。这涵盖了 1 秒。

这意味着您需要每秒加载另一个纹理图集。内存中最多可以有 2-3 个这样的纹理图集(保守地每个使用 64 MB 内存)。

真正做到这一点的唯一方法是使用 .PVR.CCZ 纹理图集来增加加载时间并减少内存使用。您仍然需要经常(在几秒钟内)加载/卸载纹理图集。因此,您应该测试加载 4k .PVR.CCZ 纹理的速度以及这是否会影响速度。

如果这太慢了(我怀疑会这样),您将不得不使用 1024x1024 .pvr.ccz 纹理(单帧)并使用 CCTextureCache 异步方法提前缓存其中的 4 个或更多(并取消缓存您的纹理'当前正在替换),以便在后台加载新纹理并且不会影响动画速度。

由于这是关于旋转的,因此您必须确保缓存中至少有一个更好的两个帧到任一方向。由于旋转可以以不同的速度发生,因此用户可能仍然会遇到延迟。

您应该尽可能地进一步降低纹理的颜色位深度,直到它过多地影响图像质量。

如果你应用书中的每一个技巧,我相信它是可行的。但它不会像“播放动画”那样简单并完成它。如果那是你想知道的。

于 2013-03-19T12:28:55.793 回答
1

我以前做过类似的事情,但是使用带有 UIWebView 控件的 JS 库,库名称是UIZE,请查看此示例。我用它处理了大约 100 张大小为 1024 × 655 的图像,它非常流畅。

从大小下载库,整理文件夹如下:

  • 旋转3d
    • 例子
      • 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];
于 2013-03-19T10:54:14.737 回答