【发布时间】: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