【问题标题】:Cocos2d-x and CocosBuilder multi-resolution for ios and androidios和android的Cocos2d-x和CocosBuilder多分辨率
【发布时间】:2013-12-16 23:40:17
【问题描述】:

我按照以下链接中的说明进行操作,无需 cocosBuilder 即可在 ios 平台上进行多分辨率工作。 http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Multi_resolution_support

当我使用cocosbuilder ccbi文件时,ipad屏幕上显示的图片还是iphone图片。

cocosbuilder这样发布资源目录

但 cocos2d-x 似乎没有从正确的目录中选择正确的分辨率的正确图像。

这是我在代码中的资源设置。我正在 ipad 3 高清版上测试它。

#define DESIGN_RESOLUTION_480X320 0
#define DESIGN_RESOLUTION_1024X768 1
#define DESIGN_RESOLUTION_2048X1536 2

/* If you want to switch design resolution, change next line */
#define TARGET_DESIGN_RESOLUTION_SIZE DESIGN_RESOLUTION_2048X1536

typedef struct tagResource {
cocos2d::CCSize size;
char directory100;
}Resource;

static Resource smallResource = { cocos2d::CCSizeMake(480, 320), "ccb/resources-iphone" };
static Resource mediumResource = { cocos2d::CCSizeMake(1024, 768), "ccb/resources-ipad" };
static Resource largeResource = { cocos2d::CCSizeMake(2048, 1536), "ccb/resources-ipadhd" };

#if (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_480X320)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(480, 320);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_1024X768)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(1024, 768);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_2048X1536)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(2048, 1536);
#else
#error unknown target design resolution!
#endif

// The font size 24 is designed for small resolution, so we should change it to fit for current design resolution
#define TITLE_FONT_SIZE (cocos2d::CCEGLView::sharedOpenGLView()->getDesignResolutionSize().width / smallResource.size.width * 24)

#endif /* APPMACROS_H */ 

【问题讨论】:

  • 您能否详细说明“cocos2d-x 不会从正确的目录中为正确的分辨率选择正确的图像”?您是否在 LLDB 中跟踪过您的代码?
  • 嗨,雷克:我找到了解决方案。原因是 cocosbuilder 在发布资源时,创建了一个非常漂亮的目录结构,可以将不同分辨率的图片放到不同的文件夹中。我假设 cocos2d-x 将使用 cocosbuilder 发布的文件结构选择正确的目录。我错了。我不得不手动设置 cocos2d-x 中的资源目录以匹配 cocosbuilder 发布的目录。在我这样做之后,一切正常。
  • @Emmy 嗨,Emmy,你能告诉我你是怎么做到的吗,因为我花了一天时间做这件事,但仍未解决。我尝试制作不同的文件夹,也尝试保留相同的文件夹,但图像带有“-hd”前缀。对于不同的文件夹,它不会在 Cocosbuilder 中正确显示,只有当非高清和 -hd 图像都在同一个文件夹中时才会显示。另外,即使在设备上之后,它也不会加载高清图像。
  • @ShayanAli ,请在下面查看我的答案。你需要在 cocos2d-x 中设置资源结构 static Resource smallResource = { cocos2d::CCSizeMake(480, 320), "ccb/resources-iphone/" };静态资源 mediumResource = { cocos2d::CCSizeMake(960, 640), "ccb/resources-iphonehd/" };静态资源 largeResource = { cocos2d::CCSizeMake(1024, 768), "ccb/resources-ipad/" };静态资源 xlargeResource = { cocos2d::CCSizeMake(2048, 1536), "ccb/resources-ipadhd/" };
  • @Emmy 感谢您的回复。那么我应该将ccbi文件放在“ccb”文件夹的根目录中,并将ccbi文件中正在使用的资源放在该文件夹内吗?我试过了,但它有时会加载高清资源,有时不会。

标签: android ipad retina-display cocos2d-x cocosbuilder


【解决方案1】:

我正在使用最新版本的 cocos2d-x 2.1.2 和 cocosbuilder 3.0。 经过半天的努力,我找到了解决方案。

原因是cocosbuilder在发布资源时,创建了一个非常好的目录结构,可以将不同分辨率的图片放到不同的文件夹中。我假设 cocos2d-x 将使用 cocosbuilder 发布的文件结构选择正确的目录。我错了。我不得不手动设置 cocos2d-x 中的资源目录以匹配 cocosbuilder 发布的目录。在我这样做之后,一切正常。

【讨论】:

    【解决方案2】:

    以下教程介绍如何将 CocosBuilder 3.0 多分辨率资源集成到 cocos2d-x 项目中:http://2sa-studio.blogspot.com/2013/04/setup-cross-platform-project-with.html。这可能会对您有所帮助。

    【讨论】:

      【解决方案3】:

      我认为无论您将图像存储在哪个“文件夹”中,都必须根据通常的模式命名它们以符合 cocos2d 约定。

      fish.png
      fish-hd.png
      

      也许您的文件夹结构来自 Android 项目?

      【讨论】:

      • Mundi:我认为对于新的 cocos2d-x 版本,它们使用相同的图像名称但不同的文件夹。
      【解决方案4】:

      错误,cocosbuilder 3.0 alpha 不再支持为 fish.png 附加 -hd。相反,您必须使用 ipadhd 分辨率将资源放置在“resources-auto”文件夹中。 cocosbuilder 将为每个屏幕分辨率创建一个目录,您的资源文件具有适当的分辨率但具有相同的文件名。

      我遇到的问题是,如果我将 ipad、iPhone-hd、iPhone-hd 的这些目录作为目标添加到我的 iOS 项目中,我会收到 COPYPNG 错误,因为我必须复制多个具有相同名称的文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多