我在Cocos2d中有一个主场景(游戏场景)和一个按钮进入“配置”场景。当用户点击主场景中的配置按钮时,我使用pushScene进入“配置”场景。我使用pushScene的原因是允许用户在他离开的地方恢复游戏。
在“配置”场景中有两个选项:“取消”和“确定”。如果用户点击“取消”,我使用popScene,游戏将从原来的位置恢复。如果用户点击“Ok”,我会使用replaceScene,因为我希望游戏从新配置开始。
因此,当用户点击“确定”时,我知道“配置”场景被新游戏场景所取代,但旧游戏场景是否也会被替换?否则,我是在正确地做事还是应该采用另一种方式让游戏场景知道它应该恢复还是重新启动。
我想通过累积未放置的场景来确保我不会泄漏记忆。
答案 0 :(得分:2)
replaceScene方法完成它所说的。它取代了当前的场景。如果您将10个场景相互推入,它将替换第10个场景并保留所有先前场景。
这是我不建议使用pushScene的原因之一。很容易忘记这样一种情况,即场景可能会比弹出更多。另一个原因是popScene无法通过转换进行动画处理。
顺便说一句,如果你在pushScene之后替换了剧情,那么你可以很容易地测试这种行为,然后在新替换的场景中使用popScene。你会看到旧场景突然出现。通常,如果你在堆栈中只有一个场景popScene,它将抛出一个断言。