每当代码到达“replaceScene”时,我都会遇到性能问题。它只发生在Play场景中。所以在游戏结束后,我会显示一个分数,然后,CCDirector需要做replaceScene才能返回主菜单。
等待大约20秒后,它最终显示主菜单。但不知何故,这是不对的,玩家会觉得游戏突然挂起。然后我试着把一些动画像预加载器,它发生了相同,预加载器图片做了一段时间的动画然后突然停止,我认为由于replaceScene触发相同的问题,虽然它仍然会显示主菜单场景。注意如何加速释放不再需要的所有物体。
希望在这里得到专家的解决方案。感谢。
这是我的代码:
............
//button at the score pop up sprite
CCMenuItem *btContinue = [CCMenuItemImage itemFromNormalImage:BTCONTINUE
selectedImage:BTCONTINUE_ON
target:self
selector:@selector(goLoader)];
btContinue.anchorPoint = ccp(0,0);
btContinue.position = ccp(340, 40);
CCMenu *menu = [CCMenu menuWithItems:btContinue, nil];
menu.position = CGPointZero;
[self addChild:menu z:ZPOPUP_CONTENT];
//prepare the loader, but set visible to NO first
CCSprite *loaderBg = [CCSprite spriteWithFile:LOADER_FINISH];
loaderBg.anchorPoint = ccp(0,0);
loaderBg.position = ccp(0,0);
loaderBg.visible = NO;
[self addChild:loaderBg z:ZLOADER_BG tag:TAG_LOADER_BG];
NSLog(@"prepare loader finish");
//animate loader
CCSprite *loaderPic = [[CCSprite alloc] initWithSpriteFrame:[[CCSpriteFrameCache sharedSpriteFrameCache]
spriteFrameByName:LOADER]];
loaderPic.anchorPoint = ccp(0.5,0.5);
loaderPic.position = ccp(200,35);
loaderPic.visible = NO;
[self addChild:loaderPic z:ZLOADER_PIC tag:TAG_LOADER_PIC];
[loaderPic runAction:[CCRepeatForever actionWithAction:[CCRotateBy actionWithDuration:0.05f angle:10.0f]]];
}
-(void)goLoader {
NSLog(@"goMainMenuScene");
CCSprite *tmpBg = (CCSprite *) [self getChildByTag:TAG_LOADER_BG];
if (tmpBg != nil)
tmpBg.visible = YES;
CCSprite *tmpPic = (CCSprite *) [self getChildByTag:TAG_LOADER_PIC];
if (tmpPic != nil)
tmpPic.visible = YES;
double time = 2.0;
id delay = [CCDelayTime actionWithDuration: time];
id proceed = [CCCallFunc actionWithTarget:self selector:@selector(goMainMenuScene)];
id seq = [CCSequence actions: delay, proceed, nil];
[self runAction:seq];
}
-(void)goMainMenuScene {
[[GameManager sharedGameManager] runSceneWithID:SCENE_MAIN_MENU];
}
答案 0 :(得分:0)
您的问题很可能是新场景,以及新场景及其子节点的init方法中发生的任何事情。加载资源文件可能需要很长时间。如果您将此操作推迟到onEnter,您可能会看到更好的结果。但是20秒,那就是很多。检查你正在做什么需要这么长时间。我敢打赌,它正在加载大量资源,或者以非常低效的方式加载它们。已知JPG文件的加载速度非常慢,如果您使用JPG将它们转换为PNG。