0

我有三个类,我们称它们为 A、B 和 C。A 类添加了一个 CCLayer 类,称为 B。B 也添加了一个 CCLayer 子类,称为 C。现在,C 播放声音效果,我想在场景时停止A 被替换。我假设如果场景 A 被调用 -replaceScene 替换,它的所有子节点也会被移除和清理。所以我试图将我的一段应该停止声音的代码放入 C 类的 -onExit 方法中。但是 -onExit 永远不会在被替换场景的任何孩子上调用。为什么会这样,我该如何解决?

所有方法(停止声音等)都有效,我只是不知道在哪里调用它们。情况基本上如下:我在我的主场景中,如果我点击“主菜单”按钮,我希望它的孩子停止播放任何声音。孩子们怎么知道他们的父母被释放了?

4

1 回答 1

1

如果没有为节点调用 onExit,则意味着它没有从场景层次结构中删除。这指向内存泄漏,特别是保留周期。您可以通过在 CCScene 的 dealloc 方法中设置断点来确认这一点。如果在更改场景时它没有被击中,那么你就是在泄漏场景。

于 2012-07-27T16:36:13.603 回答