посчитай сколько изображений в спрайте лист-cocos2d - PullRequest
0 голосов
/ 19 июля 2011

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

Так как же подсчитать количество изображений до начала цикла? или есть другой способ сделать это? (эта функция может получать различные листы спрайтов. я предпочитаю сейчас не использовать Plist .

Большое спасибо.

-(void)animation
{   

    WeInAction=1;   




    //animation
    CCSpriteBatchNode *spriteSheet = [ CCSpriteBatchNode batchNodeWithFile:animation];  
    [self addChild:spriteSheet];

    CCSprite *dollSprite = [CCSprite spriteWithTexture:spriteSheet.texture rect:CGRectMake(0, 0, 320, 350)];
    [spriteSheet addChild:dollSprite];
    spriteSheet.anchorPoint=CGPointMake(0, 30);

    CGSize s = [[CCDirector sharedDirector] winSize];
    dollSprite.position = ccp(s.width/2,s.height/2);

    CCAnimation *dollAnimation = [CCAnimation animation];
    [dollAnimation setDelay:0.1f];

    int frameCount = 0;
    for (int y = 0; y < 5; y++)      //cocos add all this frames to memery and then he starts down the action, 

    {

        for (int x = 0; x < 6; x++) 
        {

            CCSpriteFrame *frame = [CCSpriteFrame frameWithTexture:spriteSheet.texture rect:CGRectMake(x*320,y*350,320,350)];
            [dollAnimation addFrame:frame];
            frameCount++;

            if (frameCount == 25)
            break;

        }
    }




    CCAnimate *Action = [CCAnimate actionWithAnimation:dollAnimation];
    id call=[CCCallFunc actionWithTarget:self selector:@selector(finishAnimation)];
    id sequence=[CCSequence actions:Action,[CCHide action],call,nil];
    [dollSprite runAction:sequence];
    NSLog(@"%@",basic_pic); 

}

1 Ответ

0 голосов
/ 19 июля 2011

Это связано с программой, с которой вы создаете свои спрайт-листы.Cocos2D не знает, что существует более одного изображения, если вы не скажете, что оно есть.

Редактировать:

Cocos2D знает, что изображение есть, только если вы скажете его тамэто изображение.Cocos2D знает, что изображение является таблицей спрайтов, только если вы скажете, что изображение является таблицей спрайтов.Вот для чего нужны файлы PLIST.PLIST сообщает Cocos2D местоположение и размер каждого спрайта в таблице спрайтов.

Короткий ответ на ваш вопрос - нет.Самое простое - просто посчитать спрайты в вашей таблице спрайтов.Это не совсем сложно сделать.Если вам действительно нужно знать, сколько из кода, то вам нужно будет написать метод или два, чтобы подсчитать их на основе всех параметров изображения.Это довольно базовая математика.

(widthOfSpritesheet/widthOfIndividualSprite)*(heightOfSpritesheet/heightOfIndividualSprite)

Это базовая математика, но вы также должны учитывать, что у вас может не быть полностью полной таблицы спрайтов, поэтому вам понадобится способ узнать, заполнена ли последняя строка илине.

На самом деле это звучит как гораздо больше работы, чем стоит.Вам следует либо просто сосчитать свои спрайты в таблице спрайтов, либо обратиться к разработчику программного обеспечения для спрайтов с просьбой представить новую функцию, обеспечивающую полное количество спрайтов в вашей таблице спрайтов.Я использую TexturePacker, и он не предоставляет эту функцию, о которой я знаю, но она мне тоже никогда не нужна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...