2011-11-02 3 views
0

Je fais un petit jeu, voici quelques exemples de code de ce qui se passe:NSMutableArray et problèmes batchNode

-(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]; 
    } 

Le seul code que j'inclus était le code qui est pertinent pour la projection de la flèche. La flèche tire bien, le problème est chaque fois que je tire sur la chose stupide, je pense qu'il tire une nouvelle flèche, mais met plusieurs flèches sur cette flèche 1 et le fait ressembler à une grosse chose laide pixel flèche. Qu'est-ce que je fais mal? Je ne connais pas très bien NSMutableArray, mais je suis actuellement bloqué.

Répondre

-1

J'ai résolu mon propre problème en faisant un peu de recherche, je me suis également débarrassé du nœud de lot.

-1

Dans la méthode init, vous créez une nouvelle instance de NSMutableArray et l'affectez à self.arrowProjectileArray, puis vous parcourez la flècheProjectileArray dans les lignes suivantes à l'aide d'une boucle for. Si la méthode addChild: n'ajoute rien à arrowProjectileArray, alors votre code a une erreur de logique, car ce que vous faites en parcourant arrowProjectileArray traverse un tableau vide, ce qui signifie que vous ne faites rien dans ce code.

Vous devriez vérifier ce que vous avez l'intention de faire et ce que votre code fait réellement.

+0

Je ne pense pas que vous avez lu tout le code ... les flèches sont ajoutées dans le tableau, elles tirent. C'est juste de réutiliser les mêmes flèches et de faire quelque chose d'étrange. Regarder en toucheBegan – Gabe

Questions connexes