не могу очистить кэш между сценами? - PullRequest
0 голосов
/ 23 декабря 2011

Я упомянул странную вещь в cocos2d.

В моем начале игровой сцены и сцены меню я загружаю листик frameCache и spriteSheet в кеш.

я обнаружил, что если в моей игровой сцене метод dealloc я очищаю кеш с помощью:

  [[CCSpriteFrameCache sharedSpriteFrameCache] removeSpriteFrames];
     [[CCTextureCache sharedTextureCache] removeAllTextures];

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

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

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

это интересно. есть ли причина для этого? или я где-то здесь не прав?

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

1 Ответ

1 голос
/ 23 декабря 2011

Последовательность событий при смене сцен с oldScene на newScene выглядит следующим образом:

  1. newScene: init
  2. oldScene: dealloc

Таким образом, если вы загрузите кадры спрайтов в init и очистите кеши в dealloc предыдущей сцены, кадры спрайтов будут недоступны в новой сцене.

Лучший вариант - очистить кэши непосредственно перед вызовом replaceScene с новой сценой.

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