CCSprite не удаляет - PullRequest
       12

CCSprite не удаляет

0 голосов
/ 22 февраля 2011

У меня есть класс, который называется Projectiles, который наследуется от класса CCSprite, В настоящее время существует 2 типа снарядов, rain1 и rain2. У меня есть метод, который создает кучу этих спрайтов каждые 2 секунды, чтобы создать иллюзию пульсирующего дождя. Каждый из этих дождевых спрайтов добавляется в массив _пуляций и действует под действием силы тяжести.

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

В идеале, если дождь (под действием силы тяжести) падает ниже высоты экрана, я хочу, чтобы спрайт дождя был удален. Удалено из массива _projectiles, полностью удалено из представления!

Мой код этого не делает! Пожалуйста, мне нужна помощь ...

Вот фрагмент:

for (Projectile *rain1 in _projectiles){
    if (rain1.position.y < -winSize.height) {
        rain1 = nil;
        [_projectiles removeObject: rain1];
        [self removeChild:rain1 cleanup:YES];
        [rain1 release];

    }
}

for (Projectile *rain2 in _projectiles){
    if (rain2.position.y < -winSize.height) {
        rain2 = nil;
        [_projectiles removeObject: rain2];
        [self removeChild:rain2 cleanup:YES];
        [rain2 release];
    }
}

1 Ответ

1 голос
/ 22 февраля 2011

уберите rain1 = ноль, это должно сработать.вы меняете указатель rain1 на nil, поэтому, когда вы вызываете [self removechild], он не может найти спрайт rain1 для удаления.

...