场景和/或图层未被取消分配

时间:2013-12-24 08:09:29

标签: cocos2d-iphone

我已经使用Ray Wenderlich的cocos2d书和他的示例游戏SpaceVking作为起点,开始了六个月的项目,但是当我添加菜单以允许玩家逃离时,我遇到了一个重大问题。回到主菜单。 问题是该状态被保留在GameplayLayer中。 具体来说,GameplayLayer中的状态在调用方法-(void)runSceneWithID:(SceneTypes)sceneID;之间保留 (这是replaceScene的包装器)。 GameplayLayer被添加到GameScene节点(CCScene节点),该节点又作为参数传递给replaceScene。

当我重新进入GameplayLayer时会出现问题。这是序列:

  • 主菜单 - >单击级别选择 - >单击“一级”
  • 点击暂停按钮 - >对话框显示“主菜单”和“恢复” 按钮
  • 点击主菜单 - >单击级别选择 - >单击“一级”

在此序列之后,GameplayLayer上一次运行的精灵和标签仍然可见。所以现在有两个具有不同状态的相同级别的实例。例如,来自前一状态的坏人精灵不会更新他们的位置,就像他们在活动层中那样,但是他们的动画仍在运行,但是我的角色无法在当前状态下与他们交互。

我不明白,我认为一旦replaceScene(从调用runSceneWithID方法调用),场景(和附加图层)会被释放?

如果我玩游戏,它可以工作,每个级别都会被下一个使用replaceScene取代。但是,如果我从一个级别进入主菜单并返回我得到重复的图层?我正在使用ARC而且我没有保留任何物体。我相信GameplayLayer所属的场景中的dealloc方法以及GameplayLayer本身正在被调用。

我一直在努力解决这个问题,任何建议都会受到高度赞赏。

0 个答案:

没有答案