2013-04-20 2 views
1

cocos2d에 입자 트레일 효과를 추가하려고하는데 CCParticleSystemQuad 이미 터를 움직이는 스프라이트의 자식으로 추가하여 처리했습니다. 하지만이 에미 터가 결국 할당 해제되지 않는 것을 관찰하고 있습니다.움직이는 스프라이트에 추가 할 때 CCParticleSystemQuad가 할당 해제되지 않음

이 에미 터를 동일한 스프라이트에 추가했지만 여전히 계속 유지하면 전혀 이동하지 않아 이미 터가 할당이 해제됩니다. 이런 일이 왜 파악하지 못할

..

코드는 다소 같은 것입니다 ..

CCParticleSystemQuad *emitter = [[[CCParticleSystemQuad alloc] initWithFile:@"myEffect.plist"] autorelease]; 
emitter.positionType = kCCPositionTypeFree; 
emitter.autoRemoveOnFinish = YES; 
[movingSprite addChild:emitter z:movingSprite.zOrder + 1000]; 
+0

는 할당 해제 movingSprite합니까? –

+0

예, 스프라이트는 두 경우 모두 할당이 해제됩니다. – imagin

답변

2

확인 당신이 여기

similar question

중 하나입니다 [emitter removeFromParentAndCleanup:YES];라고 확인

오브젝트가 유지되는 위치를 확인하고 위의 스레드에서 Morion의 답변을 따르십시오.

빠른 솔루션 :

CCParticleSystemQuad *emitter = [CCParticleSystemQuad particleWithFile:@"myEffect.plist"]; 
emitter.positionType = kCCPositionTypeFree; 
emitter.autoRemoveOnFinish = YES; 
[movingSprite addChild:emitter z:movingSprite.zOrder + 1000]; 

//To remove 
[emitter stopSystem]; 
[emitter removeFromParentAndCleanup:YES]; 
+1

이 문제가 발생한 이유는 이동을 완료하면 [movingSprite removeFromParentAndCleanup : NO]를 호출했기 때문에 이미 터의 지속 시간이 길어서 이미 터의 동작이 ' 따라서 제거되지 않았습니다. [movingSprite removeFromParentAndCleanup : YES]를 호출하거나 위의 작업을 수행해야합니다. 지금은 분명합니다. – imagin

+0

해피 코딩 :) – Guru

관련 문제