2012-10-18 3 views
0

시퀀스 끝에 removeAllChildrenWithCleanup :을 추가 할 때까지 제대로 작동하는 변형 시퀀스가 ​​있습니다. 변환 시퀀스를 유지하고 removeAllChildrenWithCleanup을 실행하려면 어떻게해야합니까? 나는 스프라이트를 정리 한 후 CCCallFuncND을 CCMoveTo의 시퀀스를 사용하여 스프라이트를 정리하려했지만, 그것은 작동하지 않습니다removeAllChildrenWithCleanup : runAction을 잃지 않고 어떻게 사용할 수 있습니까?

// Note: spriteSheet is a CCSpriteBatchNode 
CCArray *oldSprites = [spriteSheet descendants]; 
for (int j=0; j < (int)[oldSprites count]; j++) { 
    CCSprite *sprite = (CCSprite *)[oldSprites objectAtIndex:j]; 
    if (sprite != nil) { 
     id actionMove = [CCMoveTo actionWithDuration:0.75 
              position:ccp(0,0)]; 
     [sprite runAction:actionMove]; 
    } 
} 
[spriteSheet removeAllChildrenWithCleanup:YES]; 

참고 : 여기에

문제의 코드 조각입니다 어느 한 쪽. 내가 CCSpriteBatchNode에서 자식을 제거하는 것이 매우 느리다는 것을 알고 있기 때문에 removeAllChildrenWithCleanup :을 사용하려고합니다.

+0

나는 이해하지 못한다. 물론 모든 어린이를 삭제하면 화면에서 사라집니다. 정리 옵션은 작업을 중지할지 여부를 결정합니다. 그리고 "느려질 수있는"것이 천천히 사용할 수 없다는 것을 의미하지는 않습니다. 조금 느리지 만 아마 그것을 알아 채지 못할 것입니다. – LearnCocos2D

+0

@ LearnCocos2D : 문제는 아이들을 제거하는 것에 대한 행을 추가하면 변형 시퀀스가 ​​더 이상 발생하지 않는다는 것입니다. 저는 변형 시퀀스가 ​​일어나기를 기대하고 있었고 아이들을 제거 시켰습니다. 그러나 실제 결과는 아이들이 단지 제거된다는 것입니다. 그리고 변형 순서는 발생하지 않습니다. – Roger

+0

그런 다음 순서가 끝난 후에 아이들을 제거하십시오. CCCallBlock/Func을 사용하여 시퀀스가 ​​끝나면이를 수행하십시오. removeAll .. 메서드가 실행되기 전에 액션이 끝날 것이라고 생각 했었지만 그렇지 않습니다. 작업이 추가되고 즉시 removeAll .. 함수가 실행됩니다. 그 행동은 달리고 일할 기회가 없습니다. – LearnCocos2D

답변

1

CCCallBlock을 시도 했습니까? 이 같은 것 :

id actionMove = [CCMoveTo actionWithDuration:0.75 position:ccp(0,0)]; 
id actionDelay = [CCCallBlock actionWithBlock:^{[sprite removeFromParentAndCleanup:YES]; }]; 
id sequence = [CCSequence actions:actionMove, actionDelay, nil]; 
[sprite runAction:sequence]; 
+0

감사합니다. removeFromParentAndCleanup으로 CCCallBlock이 완벽하게 작동했습니다. (전에 CCCallBlock을 시도했지만 removeChild : cleanup :을 사용하여 일관성없는 동작이 발생했습니다.) – Roger

+0

여러분을 환영합니다! –

관련 문제