Cocos2d 2.0在Retina Display中加载高清图像

时间:2012-09-23 12:01:37

标签: cocos2d-iphone retina-display

我一直在使用Cocos2d 2.0进行iPad游戏,我在为新iPad(Retina Display)加载高清图像时遇到了问题。但我无法弄清楚为什么在执行代码时没有自动加载高清图像:

即使添加[director enableRetinaDisplay:YES];后,它仍无效。以下是加载图片时的代码示例:

MainBG = [CCSprite spriteWithFile:@"menuBackground-ipad.png"];
CGSize ScreenSize = [[CCDirector sharedDirector]winSize];
MainBG.position = ccp(ScreenSize.height/2,ScreenSize.width/2);
[self addChild:MainBG z:0];

我在项目资源中有另一个图像menuBackground-ipadhd.png(我也可以从Xcode看到它)。

任何人都可以提供帮助吗?

2 个答案:

答案 0 :(得分:1)

对我而言,它适用于cocos2D 2.0

将menuBackground-ipad.png更改为menuBackground.png 确保在你的appDelegate和pushScene中找到所有这些行。也可以在图层类中使用onEnter而不是init。

 if( ! [director_ enableRetinaDisplay:YES] )
        { 
            CCLOG(@"Retina Display Not supported");
        }

    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"

    [director_ pushScene: [IntroLayer scene]]; 

//在图层中..

-(void)onEnter
{
    [super onEnter];
    MainBG = [CCSprite spriteWithFile:@"menuBackground.png"];
    CGSize ScreenSize = [[CCDirector sharedDirector]winSize];
    MainBG.position = ccp(ScreenSize.height/2,ScreenSize.width/2);
    [self addChild:MainBG z:0];
}

答案 1 :(得分:0)

加载文件时,请勿指定ipad / hd / etc文件后缀。您的问题是由此处使用-ipad后缀引起的:

MainBG = [CCSprite spriteWithFile:@"menuBackground-ipad.png"];

删除后缀以允许cocos2d在选择正确的图像时这样做:

MainBG = [CCSprite spriteWithFile:@"menuBackground.png"];