0

我是 Cocos 2d 的新手。所以请原谅我,因为这是非常基本的东西。

我正在从图像创建 CCMenuItemImage,它在非视网膜设备上运行良好,但在视网膜设备(iPhone 和 iPad 视网膜)的情况下,渲染的图像是预期大小的两倍。前提是,用于 Retina 设备的图像的分辨率是非 Retina 设备的两倍。例如,如果非 Retina 设备的按钮分辨率为 100 x 100,Retina 设备的相同按钮的分辨率为 200 x 200(因为 Retina 设备的分辨率是非 Retina 设备的两倍)。

我正在使用以下代码创建 CCMenuItemImage :-

CCMenuItemImage *startButton = [CCMenuItemImage itemFromNormalImage:startBtnImg selectedImage:startBtnImg target:self selector:@selector(MenuButtonAction:)]; 

在视网膜设备的情况下,与非视网膜设备相比,“startButtonImg”将具有双倍分辨率的文件名。

总结当我在视网膜设备上渲染 CCMenuItemImage 时,被渲染的图像是双倍大小的(不应该是这样的)。

请帮助我弄清楚我做错了什么。提前致谢!

4

3 回答 3

2

使用 -hd 更改您的视网膜图像名称,
例如
SD 图像 -> apple.png [100x100]
高清图像 -> apple-hd.png [200x200]

在您的代码中仅指 SD 图像。例如[CCSprite spriteWithFile:@"apple"];
,您的应用必须在配置中启用视网膜支持。

于 2013-04-18T05:56:09.987 回答
2

cocos2d 中视网膜显示的 hd 后缀。例如,如果您在应用程序中有一个图像 img.jpg。

你必须有 2 张图片 img.jpg (100*100) img-hd.jpg (200 *200)

img.jpg 将用于普通 iPhone,img-hd.jpg 用于高清设备

于 2013-04-18T05:56:18.123 回答
1

本教程解释了如何为 iPhone 和 iPad 提供不同的资源,包括视网膜而不是以和平的方式 :) http://www.raywenderlich.com/25736/how-to-make-a-simple-iphone-game-with -cocos2d-2-x-tutorial

您是否忘记通过以下方式让 CCFileUtils 模块知道您为每个文件使用的后缀?

// On iPhone HD: "-hd"
    CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils];
    [sharedFileUtils setEnableFallbackSuffixes:NO];             // Default: NO. No fallback suffixes are going to be used
    [sharedFileUtils setiPhoneRetinaDisplaySuffix:@"-hd"];      // Default on iPhone RetinaDisplay is "-hd"
    [sharedFileUtils setiPadSuffix:@"-ipad"];                   // Default on iPad is "ipad"
    [sharedFileUtils setiPadRetinaDisplaySuffix:@"-ipadhd"];    // Default on iPad RetinaDisplay is "-ipadhd"

确保你已经完成了它,并且当你初始化一个精灵时,你已经将所有图像资源复制到你的应用程序包中。例如,如果您有以下代码,您应该有 4 张图片:

projectile.png、projectile-hd.png、projectile-ipad.png 和 projectile-ipadhd.png

CCSprite *projectile = [CCSprite spriteWithFile:@"projectile.png"];
于 2013-04-19T09:37:41.913 回答