Цикл массива для удаления объекта, к которому прикоснулись (iPhone / Cocos2d) - PullRequest
0 голосов
/ 24 ноября 2011

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

Сейчас у меня есть это ...

-(void) spawn {
   mySprite = [CCSprite spriteWithFile:@"image.png"];
   mySprite.position = ccp(positionX,positionY);
   [myArray addObject:mySprite];
   [self addChild:mySprite];
}
- (void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
   UITouch* touch = [touches anyObject];
   CGPoint location = [touch locationInView: [touch view]]; 

    NSUInteger i, count = [myArray count];
    for (i = 0; i < count; i++) {
    mySprite = (CCSprite *)[myArray objectAtIndex:i];
    if (CGRectContainsPoint([mySprite boundingBox], location)) {

       [self removeChild:mySprite cleanup:YES]; 

    }
}

Я никогда не делалэто раньше.У кого-нибудь есть решение?

Спасибо, Майкл

1 Ответ

1 голос
/ 24 ноября 2011
- (void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch* touch = [touches anyObject];
    CGPoint location = [touch locationInView: [touch view]]; 
    NSMutableArray *spritesToDelete = [[NSMutableArray alloc] init];

    for(CCSprite* mySprite in myArray) {
        if (CGRectContainsPoint([mySprite boundingBox], location))
            [spritesToDelete addObject:mySprite];

    for(CCSprite* deadSprite in spritesToDelete) {
        [self removeChild:deadSprite cleanup:YES];
        [myArray removeObject:deadSprite];
    }
}

Этот код использует for-each для создания массива объектов, соответствующих вашему условию, а затем удаляет их.

...