objective-c - cocos2d - CCDirector,replaceScene 函数问题

标签 objective-c ios5 cocos2d-iphone

所以我目前正在开发一个应用程序,它可以在屏幕上绘制一些东西,比如图表之类的东西。在测试它及其功能时,我遇到了这个问题。

我有一个按钮,按下该按钮即可进入设置场景。我像这样初始化场景

+(id) scenew
{
   CCScene *scene = [CCScene node];
   Settings *layer = [Settings node];    
   [scene addChild: layer]; 
   return scene;

}

在那个场景中,我还有两个按钮,一个完成按钮和一个新增按钮。

done = [CCMenuItemImage itemFromNormalImage:@"done.png" selectedImage:@"done.png" target:self selector:@selector(done:)];

按下新增按钮会立即启动,但完成按钮会有 2-3 秒的延迟。 该应用程序出现了一些控制台消息,似乎当按下它时,它会重新计算整个图表,就像启动应用程序时一样。 所有按钮都调用相同的 CCDirector 函数,即 ReplaceScene。

-(void) whatNew: (id)sender
{
[[CCDirector sharedDirector] replaceScene: [New scene]];
}

-(void) done: (id)sender
{
[[CCDirector sharedDirector] replaceScene: [Main scene]];
}

有没有办法让我稍微优化一下...我的意思是...使用replaceScene的有效方法,或者也许是其他不会强制重新计算图形的方法?因为每当按下该按钮时,它实际上会跳转到我的图形类实现的顶部,该实现有 4500 多行 O.o

最佳答案

我假设您上面提到的第一个按钮位于Main场景内,转到Setting场景。

要将Main场景保留在内存中,同时将应用流程转移到Setting场景,您所要做的就是使用pushScene: 而不是 replaceScene::

// in Main scene class
[[CCDirector sharedDirector] pushScene:[Setting scene]];

然后,从 Setting 场景内部,只需使用 popScene 返回到 Main 场景:

-(void) done: (id)sender
{
    [[CCDirector sharedDirector] popScene];
}

基本上 pushScene: 只需将新场景推到当前场景的顶部,同时 popScene 将其弹出,将应用程序流程恢复到仍保留在中的前一个场景设备内存。

关于objective-c - cocos2d - CCDirector,replaceScene 函数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11308088/

相关文章:

objective-c - NSTextView 不会更新,除非我点击它,并且它不会聚焦。有任何想法吗?

iphone - 我们应该手动释放 NSDate 吗?

objective-c - 可达性重复符号

ios - 如何在cocos2d中添加iPhone5支持

audio - 我正在使用EveryPlay api录制视频,但无法录制声音

objective-c - 删除观察者

ios - iOS 中的某些 C 函数复制为 #define

android - iPhone/Android 直播 : RTMP - HTTP

objective-c - 放大比 google map max zoom 更远。

ios - 单面平台 (Box2D/Cocos2D)