2

我正在使用 cocos2D 游戏引擎。几次重播后,游戏场景开始闪烁,精灵根本不动。但是精灵的位置会随着玩家离开而移动。每个函数都会被调用。但什么也没有出现。我已经通过仪器检查了内存消耗。内存消耗没问题。任何帮助表示赞赏。提前致谢。

这是我结束游戏时使用的代码。

[[CCDirector sharedDirector].openGLView removeFromSuperview];
[[CCDirector sharedDirector] stopAnimation];
[[CCDirector sharedDirector] end];

这是我再次加载游戏场景时使用的代码。

if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
    [CCDirector setDirectorType:kCCDirectorTypeDefault];

CCDirector *director = [CCDirector sharedDirector];

viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
viewController.wantsFullScreenLayout = YES;

EAGLView *glView = [[EAGLView alloc] initWithFrame:[window bounds]];

[director setOpenGLView:glView];

if( ! [director enableRetinaDisplay:YES] )
    CCLOG(@"Retina Display Not supported");

[director setDeviceOrientation:kCCDeviceOrientationLandscapeRight];

[viewController setView:glView];
[window addSubview: viewController.view];
[window makeKeyAndVisible];

[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];


[[CCDirector sharedDirector] runWithScene: [HelloWorldLayer node]];
4

1 回答 1

2

我不断重复我自己的建议,所以我把它放在引号中:

如果您在 Cocoa 触控应用程序中使用 cocos2d,请不要一直删除并重新创建 OpenGL 视图。创建一次,并保留它。也不要完全关闭 cocos2d。只调用 stopAnimation 和 startAnimation。如果您的内存非常低,请在停止 cocos2d 并返回应用程序的 Cocoa touch 部分之前将当前 cocos2d 场景替换为空场景。

不遵循此建议的开发人员会不断遇到各种问题。可能是因为 cocos2d 在各种条件下没有经过反复关闭和​​重启循环的良好测试。

于 2012-06-27T11:29:22.910 回答