2013-05-03 5 views
0

У меня есть создать sprite sheet для non retina display и его работает отлично на тренажере .. я использовал кодспрайт лист не работает для отображения сетчатки

-(Void)addSprites{ 
    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"image.plist"]; 

    CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"image.png"]; 
    [self addChild:spriteSheet]; 

// Load up the frames of our animation 
    NSMutableArray *walkAnimFrames = [NSMutableArray array]; 
    for(int i = 1; i < 5; i++) { 
     [walkAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"image%d.png", i]]]; 
    } 

    CCAnimation *walkAnim = [CCAnimation animationWithSpriteFrames:walkAnimFrames delay:0.20f]; 
// Create a sprite for our bear 

    background = [CCSprite spriteWithSpriteFrameName:@"image1.png"]; 
    background.position = ccp(280, 175); 
    self.walkAction = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:walkAnim]]; 
    [spriteSheet addChild:background]; 
} 
-(void)startAnimation{ 
    [background runAction:_walkAction]; 

}

И для устройства я создал спрайт лист с изображением сетчатки глаза с двойным размером и изображением с именем, как [email protected] созданный plist[email protected] является и файл изображения [email protected]

Я имею в виду, что есть 4 файла

для не сетчатки дисплей.

1) imagefile.png(sprite sheet)

2) myPlist.plist

для дисплея Retina.

1) [email protected](sprite sheet) имя ключа PLIST для каждого изображения также как [email protected]

2) [email protected]

но выше код не работает для этого кода. я делаю что-то неправильно или не хватает чего-нибудь? мое приложение аварии на устройстве с сообщением об ошибке

CCSpriteFrameCache: Frame 'image1.png' not found 
2013-05-03 16:19:49.764 *** Terminating app due to uncaught exception 
'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil' 

но приведенный выше код working fine on simulator

ответ

2

При использовании cocos2d по умолчанию -HD постфикса не «@ 2x». И имена файлов внутри листа спрайта должны быть одинаковыми без каких-либо «-hd» или @ 2x. Просто имя файла главного спрайта должно быть с postfix "-hd".

myPlist-hd.plist

0

Последующие данные шаги -

  1. Создать два различных spritesheets как для сетчатки глаза и Norma разрешением.

  2. Предположим, у вас есть четыре изображения image1.png, image2.png, image3.png, image4.png. Во-первых, убедитесь, что они имеют размер в соответствии с дисплеем сетчатки. Затем создайте spritesheet и plist, используя эти изображения. Сохраните их как [email protected] и [email protected]

  3. Затем получите те же четыре изображения, чтобы уменьшить их размер до половины. Убедитесь, что их имя остается таким же. Создайте лист с помощью zwoptex с именем animation.png и animation.plist.

Теперь у вас есть две разные версии спрайтов и Plist для сетчатки и нормальные. Загрузите их, используя следующий код:

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile: @ "анимация.PLIST "];

CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"animation.png"]; 
[self addChild:spriteSheet]; 

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile: @" [email protected] "];

CCSpriteBatchNode *spriteSheethd = [CCSpriteBatchNode batchNodeWithFile:@"[email protected]"]; 
[self addChild:spriteSheethd]; 

Теперь использовать их они будут отображаться в порядке

+0

нам нужно. написать тот же код дважды? – KsK

+0

этот код показывает изображение HD на симуляторе также – KsK

Смежные вопросы