Android cocos2d eliminando un sprite después de la animation

Tengo un object que cruza la pantalla con una animation usando el siguiente código:

CCSpriteFrameCache.shanetworkingSpriteFrameCache().addSpriteFrames("ninjastar.plist"); CCSpriteSheet projectileSheet = CCSpriteSheet.spriteSheet("ninjastar.png"); addChild(projectileSheet); ArrayList<CCSpriteFrame> projectileSprites = new ArrayList<CCSpriteFrame>(); for (int i = 1; i <= 4; i++) { projectileSprites.add(CCSpriteFrameCache.spriteFrameByName("ninjastar" + i + ".png")); } CCAnimation projectileAnimation = CCAnimation.animation("throw", 0.1f, projectileSprites); CCSprite projectile = CCSprite.sprite(projectileSprites.get(0)); CCAction projectileAction = CCRepeatForever.action(CCAnimate.action(projectileAnimation, false)); projectile.setPosition(CGPoint.ccp(winSize.width + (projectile.getContentSize().width / 2.0f), actualY)); actionMove = CCMoveTo.action(actualDuration, CGPoint.ccp(-projectile.getContentSize().width / 2.0f + 320, actualY)); projectileSheet.addChild(projectile); projectile.setTag(1); _projectiles.add(projectile); CCCallFuncN actionMoveDone = CCCallFuncN.action(this, "spriteMoveFinished"); CCSequence actions = CCSequence.actions(actionMove, actionMoveDone); projectile.runAction(actions); projectile.runAction(projectileAction); 

Estoy usando "spriteMoveFinished" para eliminar el sprite una vez que se ha terminado de recorrer la pantalla:

 public void spriteMoveFinished(Object sender) { CCSprite sprite = (CCSprite)sender; _projectiles.remove(sprite); sprite.stopAllActions(); removeChild(sprite, true); } 

Sin embargo, cuando el sprite llega al final de la pantalla, simplemente permanece atascado allí en el último cuadro. ¿Cómo lo elimino por completo?

El projectile se agrega a projectileSheet , pero se elimina de la capa o escena actual, en lugar de eliminarse de projectileSheet . La última línea de spriteMoveFinished debe ser

 projectileSheet.removeChild(sprite, true); 

o mejor uso

 sprite.removeFromParentAndCleanup(true);