【问题标题】:Cocos 2d: Images rendered on retina devices are double in sizeCocos 2d:在 Retina 设备上渲染的图像大小是原来的两倍
【发布时间】:2013-04-18 05:53:56
【问题描述】:

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

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

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

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

如果是 Retina 设备,“startButtonImg”的文件名将比非 Retina 设备具有双倍分辨率。

总结当我在 Retina 设备上渲染 CCMenuItemImage 时,正在渲染的图像是双倍尺寸的(不应该是这样的)。

请帮助我找出我做错了什么。提前致谢!

【问题讨论】:

标签: iphone ios cocos2d-iphone


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    普通iphone使用img.jpg,高清设备使用img-hd.jpg

    【讨论】:

      【解决方案3】:

      本教程解释了如何为 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"
      

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

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

      CCSprite *projectile = [CCSprite spriteWithFile:@"projectile.png"];
      

      【讨论】:

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