【问题标题】:Problem of Sprites and labels are displayed by white boxesSprites和labels被白框显示的问题
【发布时间】:2010-07-31 04:45:46
【问题描述】:

我正在用 cocos2d 编写游戏。我在 AppDelegate 类中使用函数 restartDirector 。 -(void)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

谢谢。

【问题讨论】:

    标签: cocoa-touch cocos2d-iphone


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多