cocos2d удаляет спрайт с помощью действия - PullRequest
0 голосов
/ 11 сентября 2011

У меня есть эта настройка:

У слоя есть спрайт как дочерний элемент.Спрайт имеет этот код в своем методе init:

id fadeOut = [CCFadeOut actionWithDuration:1.0f];
id death = [CCCallFunc actionWithTarget:self selector:@selector(die)];
self.deathAction = [CCSequence actions:fadeOut, death, nil];
[self runAction:deathAction_];

Действие смерти вызывает метод спрайта 'die', в котором его состояние изменяется на 'dead'.

В своем методе обновленияслой проверяет всех дочерних элементов и удаляет те, которые являются «мертвыми» с помощью:

[self removeChild:child cleanup:YES];

Проблема заключается в том, что дочерний спрайт все еще имеет счет сохранения 2 после этой строки.Как я понимаю, это хранится в CCCallFunc.Если я опускаю это deathAction и вместо этого удаляю спрайты с нулевой непрозрачностью (когда они исчезают), код работает, и вызывается метод dealloc.

Как мне удалить спрайт, используя правильное действие?

1 Ответ

1 голос
/ 12 сентября 2011

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

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

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