cocos2d-iphone淡出精灵需要清理?

时间:2012-04-21 17:51:14

标签: cocos2d-iphone

我正在使用cocos2d开发iPhone游戏。

当玩家四处走动并通过做事得分时,我会导致很少的CCLabelBMFont实例出现然后淡出(CCFadeOut)。这些CCLabelBMFont实例是添加到图层的精灵。

我是否“泄漏”了内存或其他任何东西,因为它们在完成CCFadeOut操作后没有从图层中删除淡出的精灵,或者它们是否已经消失,或者不需要被视为“有效”?

2 个答案:

答案 0 :(得分:1)

CCFadeOut完成后,图层将保持现在透明的标签。之后您必须手动将其从图层中删除,除非您计划稍后将其淡化,在这种情况下您可以保留它。

这是低效的内存使用,而不是内存泄漏。

您没有导致内存泄漏,因为在取消分配图层时,它会释放其子节点,包括标签,假设您没有以不触发保留的方式实例化标签。

更新:如何在淡出标签后删除标签

将CCFadeOut替换为如下所示的CCSequence:

[yourLabel runAction:[CCSequence actions:[CCFadeOut actionWithDuration:DURATION], [CCCallFuncN actionWithTarget:self selector:@selector(removeLabel:)], nil]];

现在实现新的处理程序removeLabel:并删除标签。它以标签为参数。

答案 1 :(得分:0)

CCFadeOut不会移除或释放你的精灵,一旦他们的目的结束你应该这样做。 事实上,没有动作会释放/删除其他对象。他们只是在操纵它们。