21

Cocos2d-iphone 对 Retina 图像(和其他资产)使用 -hd 扩展。cocos2d Retina 指南仅含糊地谈到@2x 的“一些不兼容性” :

Apple 使用“@2x”后缀,但 cocos2d 不使用该扩展名,因为一些不兼容。相反,cocos2d 有自己的后缀:“-hd”。

警告:不建议使用“@2x”后缀。Apple 以一种特殊的方式处理这些图像,这可能会导致您的 cocos2d 应用程序出现错误。

伟大的。我觉得消息灵通。

通过关于 @2x 的 2 年前的错误报告,我得到了一个论坛帖子的链接,该帖子据说可以解释 @2x 的问题。但是,事实并非如此。我在那里发现的唯一提示是关于 @2x 的 iOS (4.0/4.1) 错误,我认为这些错误不再相关。我可能错过了一些关键方面(有一些关于缓存或重复加载问题的讨论)——毕竟线程很长。

我想知道如果 cocos2d 开发人员使用 @2x 后缀而不是 -hd 来表示图像,他可能会遇到哪些具体问题?

请给出具体的例子来说明可能会出错或实际上会出错的事情。

4

2 回答 2

7

这似乎是这个链接的主要原因:http: //www.cocos2d-iphone.org/forum/topic/12026

特别是 riq 的这篇文章:

我不知道 initWithContentsOfFile 是否已修复,但在 4.0 中它已损坏并且无法与 @2x、~iphone 扩展一起使用。imageNamed 缓存了所有加载的文件,因此它比 initWithContentsOfFile 消耗更多的内存 此外,@2x 扩展做了一些事情(我不知道具体是什么),但它不适用于 cocos2d。

另一个好点:当 iPhone 4 刚刚发布带有视网膜显示器时,我确信 Cocos2D 的一些用户使用的是旧版本,所以当用户在不支持的 Cocos2D 版本上使用视网膜显示器时它,事情是他们应该的两倍大。除非您使用的是非常早期的 Cocos2D 版本,否则现在大多数情况下都已修复此问题。

概述,所以似乎主要问题是来自 iOS 4 的 initWithContentsOfFile,但他们已经解决了这个问题,因为我在我的应用程序中使用了 Cocos2D 2.0-rc2 的确切 API,我没有任何问题。我使用所有 Apple 指定的图像扩展,一切都很好!:)

于 2012-06-15T01:13:09.920 回答
7

这似乎有历史背景。

使使用 -hd 图形仍然值得的是,加载它们不依赖于 Apple 功能,而是在框架代码中完成。所以 -hd 可以在 iPhone Simulator 模式下为 iPad 加载,并在 2x 模式下使用更高分辨率的图片。

除此之外,当我一周前研究这个问题时,我找不到更多不使用@2x 的理由。

如果您想了解所有详细信息,最好给 riq 发送一封电子邮件。

于 2012-06-13T23:41:13.493 回答