Cocos2d GestureRecognizer не работает после завершения уровня и его перезапуска - PullRequest
3 голосов
/ 28 октября 2011

В настоящее время я создаю игру с cocos2d, и у меня возникает следующая проблема: у меня есть MenuScene, где пользователь может запустить игру.Когда он делает это, gestRecognizer инициализируется с уровнем следующим образом:

CCScene *scene = [LevelScene scene];
LevelScene *layer = (LevelScene *) [scene.children objectAtIndex:0];
UIPanGestureRecognizer *gestureRecognizer = [[[UIPanGestureRecognizer alloc] initWithTarget:layer action:@selector(handlePanFrom:)] autorelease];

Все работает нормально, и после завершения уровня пользователь видит gameOverScene и отправляется обратно в MenuScene.Когда я снова запускаю игру, все работает (игровая анимация, отображается уровень и т. Д.), Кроме того факта, что gestRecognizer больше не распознает никаких прикосновений.У вас есть идеи, почему это может быть или как это отладить?

Спасибо.

1 Ответ

2 голосов
/ 28 октября 2011

По всей вероятности, gestRecognizer сохраняет цель.Я столкнулся с подобной проблемой, которая привела к тому, что «целевая» сцена, которая была делегатом класса UIKit, не была освобождена.Т.е. вся сцена была утечка.

Из-за некоторых неудачных обстоятельств селектор исходной сцены все еще вызывался, но не обрабатывался, потому что сцена была навсегда заблокирована в состоянии «игра окончена».Я предполагаю, что с тобой что-то подобное происходит.

Вопрос: отпускаешь ли ты gestRecognizer перед тем, как перейти от LevelScene к другой сцене?Если нет, то вы обязательно должны это исправить!

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