Cocos2D removeChildByTag - PullRequest
       4

Cocos2D removeChildByTag

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

Я делаю свою первую игру cocos2D, и у меня возникли проблемы с тегами. Я собираюсь добавить много спрайтов к своему gamelayer, поэтому я использовал [self addChild:sprite z:1 tag:aTag];, где aTag +=1; каждый раз, когда я увеличиваю значение тега. потому что каждый спрайт должен иметь уникальное значение тега. Иногда я хочу очистить все дочерние элементы в моем игровом слое, поэтому я удаляю эти спрайты, используя значение тега, подобное этому.

 for (int i=10; i<1000; i++) {
        CCNode *child = [self getChildByTag:i];

        if (child == nil)
            NSLog(@"removeChildByTag: child not found!");
        else{
            NSLog(@"child removed");
            [self removeChild:child cleanup:YES];
            child=nil;
        }
    }  

и когда я снова добавляю эти спрайты, такие как [self addChild:sprite z:1 tag:aTag], в свой геймплеер, произошла ошибка "EXE bad Access". почему это показывает ошибку.

Ответы [ 2 ]

3 голосов
/ 24 февраля 2011

вы можете напрямую удалить ребенка, используя
[self removeChildByTag: очистка тега: ДА];

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

0 голосов
/ 16 января 2013

Используется для определения SAFE_REMOVE следующим образом

#define SAFE_REMOVE(p)              if (p) [p removeFromParentAndCleanup:YES];


// Remove the the tag


CCNode* node = [self getChildByTag:YOURTAGNAMEHERE];
    if (node != nil)
    {
        SAFE_REMOVE(node);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...