removeSpriteFramesFromFile, похоже, не работает - PullRequest
0 голосов
/ 31 октября 2011

Я использую CCScrollLayer.и я пытаюсь подготовить текстуру уровня на экране выбора стадии, прежде чем уровень будет запущен.Итак, я сделал этот экран так, как когда я меняю уровень, то перед тем, как подготовленная текстура уровня должна быть удалена.Но я не думаю, что метод removeSpriteFramesFromFile работает хорошо.потому что, когда я прокручиваю несколько слоев, он внезапно вызывает «Предупреждение памяти» и удаляет эти текстуры в то время, тогда я ожидал.

-(void) prepareTexture:(NSNumber*)number
{
    int _page = [number intValue];

    if(loadingTexNum != 0 && (_page + 1) != loadingTexNum)
    {
        [[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFramesFromFile:[NSString stringWithFormat:@"L%d.plist", loadingTexNum]];
        loadingTexNum = _page + 1;
        [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:@"L%d.plist", loadingTexNum]];
    }

    if(loadingTexNum == 0 && (_page + 1) != loadingTexNum)
    {
        loadingTexNum = _page + 1;
        [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:[NSString stringWithFormat:@"L%d.plist", loadingTexNum]];
    }
}

Спасибо

1 Ответ

2 голосов
/ 01 ноября 2011

Полагаю, вы неправильно поняли, что делает этот метод:

[[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFramesFromFile:@"file.plist"];

Он загружает спрайт-кадры в список, затем удаляет объекты CCSpriteFrame из этого списка из кэша - если они кэшируются. НЕ удаляет текстуру, только объекты CCSpriteFrame!

Чтобы удалить текстуру из кеша вам нужно позвонить:

 [[CCTextureCache sharedTextureCache] removeTexture:tex];

Вы должны знать, что объект CCSpriteFrame - это относительно легкий объект, который потребляет не более 64 байт памяти. Это ничто по сравнению даже с очень маленькой текстурой 32x32 с 16-битной глубиной цвета, которая использует 2048 байт памяти.

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