удалить спрайты с анимацией, другой порядок z - PullRequest
0 голосов
/ 26 января 2012

Как удалить спрайты, которые находятся сверху каждого, но с другим порядком z?

Код, который я использую:

- (void)removeSelectedSprite:(CGPoint)touchLocation {
    CCSprite * newSprite = nil;
    for (CCSprite *sprite in selectedSpritesArray) {
        if (CGRectContainsPoint(sprite.boundingBox, touchLocation)) {            
            newSprite = sprite;
            break;
        }
    }
    if (newSprite) {

        CCSprite *fixedSprite = [CCSprite spriteWithSpriteFrameName:@"Animation_01.png"];

        fixedSprite.position = ccp(newSprite.contentSize.width/2,newSprite.contentSize.height/2);
        [newSprite addChild:fixedSprite];

        NSMutableArray *animFrames = [NSMutableArray array];
        for(int i = 1; i <= 5; ++i) {

            [animFrames addObject: [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName: [NSString stringWithFormat:@"Animation_%02d.png", i]]];
        }

        CCAnimation *anim = [CCAnimation animationWithFrames:animFrames delay:0.05f];
        CCActionInterval *animAction = [CCAnimate actionWithAnimation:anim restoreOriginalFrame:NO];

        id seq = [CCSequence actions: animAction, [CCCallFunc actionWithTarget:fixedSprite selector:@selector(removeFromParentAndCleanup:)], [CCCallFunc actionWithTarget:newSprite selector:@selector(removeFromParentAndCleanup:)], nil];
        [fixedSprite runAction:seq];
    }

}

- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {    
    CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
    [self removeSelectedSprite:touchLocation];      
    return TRUE;    
}

Почему не работает спрайты, которые находятся сверху каждого (с различным порядком z)?

1 Ответ

0 голосов
/ 26 января 2012

Не знаю, есть ли лучший способ, но на ум приходит только проверка дочерних слоев и их z-порядка и удаление на основе z-порядка.

...