在视网膜显示器上使用Zwoptex和Cocos2d的CCSpriteBatchNode

时间:2011-08-24 04:06:06

标签: cocos2d-iphone

我使用Zwoptex Flash版本生成:

  • 带有-hd后缀(双倍尺寸图像)的.png纹理文件
  • 没有-hd后缀(正常大小的图像)的.png纹理文件
  • 带有-hd后缀的.plist文件。
  • 带有-hd后缀的.plist文件。

我检查了文件,一切似乎都没问题。

在我的游戏中,首先我将.plist文件添加到缓存中:

[[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@"ParticleAnimations.plist"];

然后我创建了我的CCSpriteBatchNode:

spriteBatch = [CCSpriteBatchNode batchNodeWithFile:@"ParticleAnimations.png"];
[self addChild:spriteBatch z:0];

最后创建我的CCSprite,其中包含在我的纹理中找到的图像的文件名:

CCSprite *particle = [CCSprite spriteWithSpriteFrameName:@"Particle1.png"];
[spriteBatch addChild:particle z:0];

现在,我在模拟器(iPhone)上运行它,它运行得很好。 然后,我更改硬件选项并将其设置为“iPhone(视网膜)”,这将在960x640屏幕上转换模拟器。但是,我的gane崩溃了。在日志中,以下是这些条目:

  

cocos2d:CCSpriteFrameCache:尝试将文件'ParticleAnimations.png'用作纹理

     

cocos2d:CCSpriteFrameCache:找不到框架'Particle1.png'

我不太明白。首先,为什么它使用 ParticleAnimations.png 而不是 ParticleAnimations-hd.png ,因为它处于Retina显示模式?当然,为什么要寻找 Particle1.png 而不是 Particle1-hd.png

1 个答案:

答案 0 :(得分:11)

首先,您是否考虑将这些行取消注释到appdelegate:

// Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices
    if( ! [director enableRetinaDisplay:YES] )
        CCLOG(@"Retina Display Not supported");

它将使Cocos2d能够使用-hd文件。

然后你的精灵名称必须与你的精灵表格完全相同。只有plist和纹理文件必须带有“-hd”后缀。例如,如果你有一个名为toto.png,titi.png,tata.png的精灵进入名为mysp的spritesheets,它应该是这样的:

// Normal
- mysp.png
- mysp.plist
  |- toto.png
  |- titi.png
  |- tata.png

// Retina
- mysp-hd.png
- mysp-hd.plist
  |- toto.png
  |- titi.png
  |- tata.png

有关详细信息,请参阅此处的官方文档:RetinaDisplay in cocos2d

我希望它能帮到你!