1

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

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

我是通过在完成 CCFadeOut 操作后不从图层中删除淡出的精灵来“泄漏”内存或任何东西,还是它们随后消失了,或者不需要被视为“有效”?

4

2 回答 2

1

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

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

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

更新:标签淡出后如何移除标签

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

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

现在实现您的新处理程序 removeLabel: 并使其删除标签。它将标签作为参数。

于 2012-04-22T13:46:22.843 回答
0

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

于 2012-04-21T18:12:06.720 回答