Проблемы NSMutableArray и batchNode - PullRequest
0 голосов
/ 03 ноября 2011

Я делаю небольшую игру, вот пример кода того, что происходит:

-(id) init
{
       self.arrowProjectileArray = [[[NSMutableArray alloc] init] autorelease];
       self.batchNode = [CCSpriteBatchNode batchNodeWithTexture:[[CCTextureCache sharedTextureCache] addImage:@"arrow.png"]];
       [self addChild:_batchNode z:2];
        for (CCSprite *projectile in _arrowProjectileArray) {
        [_batchNode removeChild:projectile cleanup:YES];
        }
        [_arrowProjectileArray removeAllObjects];
        self.nextProjectile = nil; 
        }
    }

-(void) callEveryFrame:(ccTime)dt{
    for (int i = 0; i < [_arrowProjectileArray count];i++) {
           CCSprite *cursprite = [_arrowProjectileArray objectAtIndex:i];
           if (cursprite.tag == 1) {
           float x = theSpot.x+10;
           float y = theSpot.y+10;
           cursprite.position = ccp(x, y);
           }
        }

    - (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
    [_batchNode addChild:_nextProjectile z:1 tag:1];
        [_arrowProjectileArray addObject: _nextProjectile];
        [self spriteMoveFinished];
    }
    -(void) dealloc
    {
        self.arrowProjectileArray = nil;
        self.nextProjectile = nil;
        [super dealloc];
    }

Единственный код, который я включил, был кодом, который имеет отношение к проекции стрелки.Стрелка стреляет нормально, проблема в том, что каждый раз, когда я стреляю в глупую вещь, я думаю, что она стреляет новой стрелой, но помещает несколько стрелок на эту 1 стрелку и делает ее похожей на жирную уродливую стрелку пикселя.Что я делаю неправильно?Я не слишком знаком с NSMutableArray, но в данный момент я застрял.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2011

Я решил собственную проблему, немного поработав, я также избавился от пакетного узла.

0 голосов
/ 03 ноября 2011

В методе init вы создаете новый экземпляр NSMutableArray и присваиваете его self.arrowProjectileArray, затем пересекаете arrowProjectileArray в следующих строках, используя цикл for. Если addChild: метод ничего не добавляет к arrowProjectileArray, то в вашем коде есть логическая ошибка, потому что при обходе arrowProjectileArray вы проходите пустой массив, что означает, что вы ничего не делаете в этом коде.

Вы должны перепроверить, что вы собираетесь делать и что на самом деле делает ваш код.

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