1

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

即使添加[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 中看到它)。

任何人都可以帮忙吗?

4

2 回答 2

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];
}
于 2012-09-23T13:34:44.333 回答
0

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

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

删除后缀以允许 cocos2d 选择正确的图像:

MainBG = [CCSprite spriteWithFile:@"menuBackground.png"];
于 2012-09-24T09:08:17.133 回答