Как перезапустить сцену cocos2d и очистить память после предыдущей?
[director replaceScene:s]
отображает розовый экран.Не могу заставить его работать.
Обход, который я сделал, приведен ниже, однако после закрытия сцены этот способ работает очень медленно и медленно реагирует на прикосновения. MainViewController.m :
- (IBAction)startScene {
[CCTexture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA8888];
if ([director runningScene]) {
[director end];
works = NO;
}
if (!works) {
EAGLView *glview = [EAGLView viewWithFrame:CGRectMake(0,0, 768, 1024)];
[self.view addSubview:glview];
[director setOpenGLView:glview];
CCLayer *layer = [PlayLayer node];
CCScene *s = [CCScene node];
[s addChild: layer];
[director runWithScene:s];
}
}
Внутри PlayLayer.m Я возвращаюсь из сцены для просмотра, используя:
CCDirector *d = [CCDirector sharedDirector];
EAGLView *v = [d openGLView];
[v removeFromSuperview];
Приложение отображает изображения (1280x960x32, просмотр изображений внутри scrollview), и когда пользователь нажимает кнопку, он может запустить сцену cocos2d.Затем пользователь может уйти со сцены обратно для просмотра (.xib) и продолжить просмотр изображений, пока не найдет новое, с которого начинается сцена.
Я считаю, что это не хороший способ покинуть сцену, но все остальное япопытка вызывает сбой приложения, или я продолжаю получать этот розовый экран во время второго запуска сцены.Как мне его перезапустить?