Как правильно воспроизвести уровень в игре cocos2d, ЧТОБЫ ПРЕДОТВРАТИТЬ ПРЕКРАЩЕНИЕ? - PullRequest
3 голосов
/ 10 сентября 2011

Я снова застрял с проблемой завершения игры, на этот раз из-за переполнения памяти, хотя, как и при повторном воспроизведении уровня, выполните следующие шаги:

Шаг 1: есть кнопка меню, при нажатии которой открывается всплывающее меню, это достигается с помощью push scene, который выдвигает класс меню в предыдущую сцену
Шаг 2: во всплывающем меню есть три кнопки:
1. вернуться к игре, которая возобновляет игру из предыдущего состояния, это достигается с помощью popping up the scene, 2. уровень воспроизведения,
3. вернуться домой,

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

Как преодолеть эту проблему? Я ужасно застрял с этим.

Ответы [ 2 ]

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

Хорошо, что я сделал, чтобы преодолеть эту проблему, было хитрым решением:

Вот шаги:

шаг 1: сделал глобальную переменную (флаг) шаг 2: сохранить действие в этой глобальной переменной для воспроизведения или возврата домой
шаг 3: всплывающая толкаемая сцена (которая освободила память о push-сцене) шаг 4: проверьте, что говорит флаг в селекторе расписания (для повторного воспроизведения или для возврата к дому)
шаг 5: заменить запрашиваемую сцену (которая освобождает память текущей сцены)

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

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

Звучит так, будто вы не выпускаете что-то из своей Сцены.Dealloc вызывается только тогда, когда счет сохранения объекта равен нулю.Просмотрите ваш код и убедитесь, что каждый из ваших объектов правильно выпущен, когда вы закончите с ним.

Инструмент анализа (по умолчанию Cmd + Shift + B) в XCode 4 должен дать вам хорошийИдея, что вы протекаете.

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