精灵和标签的问题由白框显示

时间:2010-06-17 12:09:38

标签: cocoa-touch cocos2d-iphone

我正在用cocos2d写一个游戏。我在AppDelegate类中使用函数restartDirector。 - (无效)restartDirector {

[[CCDirector sharedDirector] end];

[[CCDirector  sharedDirector] release];

if( ! [CCDirector setDirectorType:CCDirectorTypeDisplayLink] )
[CCDirector setDirectorType:CCDirectorTypeDefault];

[[CCDirector sharedDirector] setPixelFormat:kPixelFormatRGBA8888];
[CCTexture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA8888];

[[CCDirector sharedDirector] setAnimationInterval:1.0/60];
[[CCDirector sharedDirector] setDisplayFPS:YES];
[[CCDirector sharedDirector] setDeviceOrientation:CCDeviceOrientationLandscapeLeft];

[[CCDirector sharedDirector] attachInView:window];

}

我在游戏场景中调用了这个函数。

-(void)PracticeMethod:(id)sender
{
[MY_DELEGATE restartDirector];

CCScene *endPageScene = [CCScene node];
CCLayer *endPageLayer = [DummyScene node];

[endPageScene addChild:endPageLayer];

[[CCDirector sharedDirector] runWithScene:endPageScene]; 

//  [[CCDirector sharedDirector] replaceScene:endPageScene];
}

当使用replaceScene时,游戏中没有问题,但是abject分配的内存很高(我在泄漏工具中检查过)。 所以我使用了runWithScene。 但是,当场景DummyScene加载精灵时使用这些精灵,其中的标签由白框显示。我看不到精灵和标签。 如果我使用replaceScene一切正常,但内存分配很高。 这是我的问题。

alt text http://www.freeimagehosting.net/uploads/05c6b3e661.png

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该只对显示的第一个场景使用runWithScene。这通常在AppDelegate中完成。必须使用replaceScene完成所有进一步的场景更改。

请记住,当您执行replaceScene时,两个场景将同时在内存中。除非您使用间歇性的“加载场景”,否则您将看到内存使用量激增。

此外,检查场景的dealloc方法是否被调用。在那里设置一个断点,或者至少添加一个CCLOG语句。如果在替换场景后没有调用dealloc方法(并且任何转换已经结束),那么你正在泄漏场景,你需要找到你要离开的场景中的原因。