Как сохранить постоянную скорость fps в cocos2d - PullRequest
0 голосов
/ 28 ноября 2010

У меня 3 вопроса.

  1. Как сохранить постоянную (почти) частоту кадров в секунду в cocos2d. Когда много CCSprite создается и удаляется в течение небольшого интервала, например (5-8) в секунду, возможно ли поддерживать частоту кадров почти постоянной ??

  2. Достаточно ли [self removeChild:sprite cleanup:YES] или я должен также использовать

      CCTexture2D *texture = [sprite texture]; [[CCTextureCache sharedTextureCache] removeTexture: texture];
    
  3. Следующая часть кода отвечает за удаление кадра. Как лучше выполнить ту же задачу?

    id fadeout = [CCFadeOut actionWithDuration:1.4f];
    
    id call = [CCCallFunc actionWithTarget:self   
    selector:@selector(RemoveSmashedSprite:)];
    
    CCSequence* sequence= [CCSequence
    actions:fadeout, call, nil];
    
    [smash runAction:sequence];
    

    ... и ...

    > -(void)RemoveSmashedSprite:(id)sender
    {
    
    
        CCSprite *sp = (CCSprite *)sender;
    
    
    
        [self removeChild:sp cleanup:YES];  
    
    }
    

Это вызывается 5-8 раз в секунду. Таким образом, частота кадров снижается. Кто-нибудь может мне помочь?

Ответы [ 3 ]

0 голосов
/ 26 сентября 2011

Изменить это:

id call = [CCCallFunc actionWithTarget:self selector:@selector(RemoveSmashedSprite:)];

В это:

id call = [CCCallFuncN actionWithTarget:self selector:@selector(RemoveSmashedSprite:)];
0 голосов
/ 23 декабря 2014

Вы можете использовать действие удаления как последнее действие вместо CCCallFunc.

id action = [CCActionRemove action];

Это действие удалит узел, выполняющий это действие, из его родителя

0 голосов
/ 30 ноября 2010

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

Чтобы поддерживать постоянную частоту кадров, вы можете попробовать повторно использовать спрайты, а не создавать и удалять их. Вместо вызова removeChild вы можете установить visible = NO и добавить его в массив неиспользуемых спрайтов. Затем, когда вам нужен новый из этих спрайтов, вы проверяете, есть ли в этом неиспользуемом массиве, и создаете новый, только если он пуст. Таким образом вы уменьшите количество спрайтов, созданных и уничтоженных.

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