Проблема с собственным индикатором здоровья.Cocos2d - PullRequest
1 голос
/ 27 декабря 2011

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

-(void)updateHealthIndicator:(ccTime)delta{

    //getting health and healthReduction (removed for better readability). This part does not affect the functioning of the loop...


    if(health-healthReduction > 0 ){
        NSLog(@"updatehealthindicator called ! health = %d ", health);
        health -= healthReduction;

        [self removeChildByTag:1000 cleanup:YES];
        for (int i = health; i>0; i--){ 
            onePercent = [CCSprite spriteWithFile:@"onepercentofhi.png"];
            onePercent.anchorPoint = ccp(0,0);
            onePercent.position = ccp(880+(-onePercent.contentSize.width) * i,712 );
            [self addChild:onePercent z:2 tag:1000];

        }



}

Показывается индикатор здоровья, но кажется, что он удаляет только первый «однопроцентный» кусок.Все ли спрайты с тегом 1000 затронуты этим [self removeChildByTag:1000 cleanup:YES];?

1 Ответ

1 голос
/ 28 декабря 2011

Удален только один вид с данным тегом.

Однако вы можете расширить CCNode следующим кодом, чтобы удалить все дочерние элементы

-(void) removeChildrenByTag:(int)aTag cleanup:(BOOL)cleanup
{
    NSAssert( aTag != kCocosNodeTagInvalid, @"Invalid tag");
    int w=[children count]-1;
    while(w>=0){
        CocosNode *node=[children objectAtIndex:w];
        if( node.tag == aTag ){
            [self detachChild:node cleanup:cleanup];
        }
        w--;
    }
}

Примечание: Это предлагаемое решение , которое будет интегрировано в Cocos2D, но еще не сделало его.

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