문제

나는 Cocos2D와 함께 게임을하고 있으며 삭제하고 싶은 스프라이트가 많이 있습니다. 예를 들어 화면에 많은 캐릭터가있을 수 있지만 게임이 끝나면 청소하고 싶습니다. 지금은 산만하게 특수 효과 (입자 시스템)를 만들었지 만 투명하고 층에서 제거 할 때 스프라이트가 사라지는 것을 볼 수있는 모든 화면을 덮지 않기 때문입니다.

또한 지침이 사용자에게 너무 빨리 실행되기 때문에 입자 효과가 시작되기 전에 스프라이트가 사라지는 것처럼 보입니다!

내 두 가지 문제에 대한 제안이 있습니까? 감사.

NSMutableArray *toRemove = [[NSMutableArray alloc] init]; // array of sprites that I collect to remove

spriteCount = 0;
    if([self findAllSprites:parent forRemoval:toRemove] > 0){ // is there is at least one sprite to delete. If not then don't do anything
        [self specialEffect]; // runs for maybe 3 seconds. 
                    // how can I stall here so that the sprites aren't removed "instantaneously"?
        for (Character* aCharacter in toRemove) {
            [aCharacter.parent remove:aCharacter];      
        }

}

도움이 되었습니까?

해결책

PerformSelector : WithObject : AfterDelay :. 예를 들어:

    NSMutableArray *toRemove = [[NSMutableArray alloc] init]; // array of sprites that I collect to remove
    spriteCount = 0;
    if([self findAllSprites:parent forRemoval:toRemove] > 0){ // is there is at least one sprite to delete. If not then don't do anything
        [self specialEffect]; // runs for maybe 3 seconds. 
        [self performSelector:@selector(removeSprites:) withObject: toRemove afterDelay:1.0];
    }
    [toRemove release];

- (void) removeSprites: (NSArray*) toRemove
{
    for (Character* aCharacter in toRemove) {
        [aCharacter.parent remove:aCharacter];          
    }
}

PerformSelector : WithObject : AfterDelay : Toremove 객체를 유지하고 호출을 삭제 한 후에까지 살아남을 수 있으므로 ToreMove와 함께 특별한 작업을 수행 할 필요가 없습니다 (소유 한 이후로 표시 해야하는대로 출시 해야하는 경우는 제외됩니다. 또한).

다른 팁

실행되도록 스레드에서 '특수 효과'를 수행해야합니다. 함께 스프라이트가 제거됩니다. 자세한 내용은 NSThread 조회를 사용하면 두 프로세스를 동기화 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top