首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cocos2d指挥流控:推流场景替换场景。推送的场景会发生什么?

cocos2d指挥流控:推流场景替换场景。推送的场景会发生什么?
EN

Stack Overflow用户
提问于 2011-09-29 17:59:09
回答 2查看 2.4K关注 0票数 1
代码语言:javascript
复制
// TRY TO AVOID A BIG STACK OF PUSHED SCENES
-(void) mainMenu()
{
    // etc
    [[CCDirector sharedDirector] pushScene: gameScene];
}
// stack:
//   . game  <-- running scene
//   . mainMenu

-(void) game
{
    [[CCDirector sharedDirector] pushScene: gameOverScene];
}
// stack:
//   . gameOver  <-- running scene
//   . game
//   . mainMenu

-(void) showGameOver
{
    [[CCDirector sharedDirector] pushScene: hiScoreScene];
}
// stack:
//   . scores  <-- running scene (4 pushed scenes... expensive)
//   . gameOver
//   . game
//   . mainMenu

-(void) toMainMenu
{
    [CCDirector sharedDirector] replaceScene: mainScene];
}
// stack:
//   I don't know...

我想在replaceScene: call之后删除堆栈中的所有场景。但我不知道这是否会发生。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-30 17:36:35

从头到尾都使用replaceScene。

推送和弹出场景只对快速中场休息有意义,即显示设置屏幕。您将希望避免推送场景的任何情况,在推送场景之后可能会调用replaceScene。跟踪当前场景堆栈变得非常复杂和不方便(Director没有公开任何方便的方法来管理场景堆栈)。很容易意外地不断增加推送场景的堆栈,直到内存耗尽。

简短的答案是:尽可能避免弹出和推送场景。如果需要保持状态,请创建一个Singleton类,用于存储替换场景时需要持久化的值。

票数 1
EN

Stack Overflow用户

发布于 2012-03-02 09:25:46

我只是被这个(cocos2d-x,但相同的概念)所吸引。我现在的经验法则是-只有当退出该屏幕的唯一方法是弹出场景时,才会按下该场景。如果要从推送的场景转到另一个场景,则应改用replaceScene。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7595597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档