我已阅读cocos2d guide to retina displays。我的游戏中有常规和-hd
资产。问题是视网膜显示装置看起来与非视网膜不同,好像图像已经缩放到50%。考虑以下屏幕截图,左侧是iPhone(非视网膜),右侧是iPhone 5(视网膜):
请注意,在正确的屏幕截图中,尽管事实 -hd
资产为@ 2x,但资产已按比例缩小了50%。例如,使用“叶子图标”,有green_icon.png
(50x50像素)和green_icon-hd.png
(100x100像素)。在左图中,它显示@ 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];
非常直截了当......
答案 0 :(得分:0)
经过一番挖掘后,我发现这种情况正在发生,因为我正在将绝对图像资产路径传递给cocos2d。由于我不会进入的原因,这在我的游戏中是必要的。但是,当提供绝对路径时,cocos2d故意不会尝试在文件路径上使用-hd
(或其他变体)。
具体来说,如果传递完整路径,您可以看到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;
}