0

我已阅读cocos2d 视网膜显示器指南。我的游戏中既有常规的也有-hd资产。问题是视网膜显示设备看起来与非视网膜显示设备不同,好像图像已缩放到 50%。考虑下面的截图,左边是 iPhone(非视网膜),右边是 iPhone 5(视网膜):

在此处输入图像描述

请注意,在右侧屏幕截图中,尽管-hd资产为 @2x ,但资产已按比例缩小了 50% 。例如,“叶子图标”有green_icon.png(50x50 px) 和green_icon-hd.png(100x100 px)。在左图中,它显示为@ 50x50 像素(正确),但在右图中,它显示为 25x25 像素(似乎错误地缩小了视网膜图像)。

这是我的启动代码:

NSString *EXT_HD = @"-hd";
CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils];
[sharedFileUtils setEnableFallbackSuffixes:YES];
[sharedFileUtils.suffixesDict setValue:EXT_HD forKey:(NSString*)kCCFileUtilsiPhoneHD];
[sharedFileUtils.suffixesDict setValue:EXT_HD forKey:(NSString*)kCCFileUtilsiPhone5HD];
[sharedFileUtils.suffixesDict setValue:EXT_HD forKey:(NSString*)kCCFileUtilsiPadHD];
[sharedFileUtils.suffixesDict setValue:EXT_HD forKey:(NSString*)kCCFileUtilsMacHD];
[[CCDirector sharedDirector] enableRetinaDisplay:YES];

(请注意,我也尝试过明确禁用视网膜显示但没有运气)。

这是我创建精灵的实际实现(例如,绿叶图标):

[CCSprite spriteWithFile:fpIcon];

很直接...

4

1 回答 1

0

经过一番挖掘,我发现这是因为我将绝对图像资产路径传递给 cocos2d。由于我不会进入的原因,这在我的游戏中是必要的。-hd但是,cocos2d在提供绝对路径时,故意不尝试在文件路径上使用(或其他变体)。

具体来说,如果传递完整路径,您可以看到CCFileUtils.m中止:fullPathForFilename

-(NSString*) fullPathForFilename:(NSString*)filename resolutionType:(ccResolutionType*)resolutionType
{
    // fullpath? return it
    if ([filename isAbsolutePath]) {
        CCLOGWARN(@"cocos2d: WARNING fullPathForFilename:resolutionType: should not be called with absolute path. Instead call fullPathForFilenameIgnoringResolutions:");
        *resolutionType = kCCResolutionUnknown;
        return filename;
    }
于 2013-08-22T18:05:07.583 回答