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

Vol*_*ort 3 cocos2d-iphone

我使用Zwoptex Flash版本生成:

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

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

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

[[CCSpriteFrameCache sharedSpriteFrameCache]addSpriteFramesWithFile:@"ParticleAnimations.plist"];
Run Code Online (Sandbox Code Playgroud)

然后我创建了我的CCSpriteBatchNode:

spriteBatch = [CCSpriteBatchNode batchNodeWithFile:@"ParticleAnimations.png"];
[self addChild:spriteBatch z:0];
Run Code Online (Sandbox Code Playgroud)

最后使用我的纹理中找到的图像的文件名创建我的CCSprite:

CCSprite *particle = [CCSprite spriteWithSpriteFrameName:@"Particle1.png"];
[spriteBatch addChild:particle z:0];
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Yan*_*iot 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");
Run Code Online (Sandbox Code Playgroud)

它将使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
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅此处的官方文档:cocos2d中的RetinaDisplay

我希望它能帮到你!