Cocos 2d:在视网膜设备上呈现的图像尺寸加倍

时间:2013-04-18 05:53:56

标签: iphone ios cocos2d-iphone

我是Cocos 2d的新手。请原谅我这是非常基本的东西。

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

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

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

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

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

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

3 个答案:

答案 0 :(得分:2)

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

代码中的

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

答案 1 :(得分:2)

cocos2d中视网膜显示的

hd后缀。 例如,如果你在应用程序中有一个图像img.jpg。

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

img.jpg将用于普通iphone和img-hd.jpg用于高清设备

答案 2 :(得分: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"];