感谢您的帮助,并阅读本文。
以下是我的来源:Download_Cocos2d_Continuous_Scrolling_Tile_Based_Game
基于cocos2D游戏的连续滚动图块。在这个游戏中,tileMaps根据需要加载和发布 - 第三个瓦片地图是 第一个被释放时加载。重复相同的过程。由于加载时间,在tile滚动中观察到一些混蛋。所以我使用单独的线程来加载tile map。这在屏幕上引起了奇怪的闪光......只在设备中。
这是加载代码:
[NSThread detachNewThreadSelector:@selector(loadTileMapInThread:) toTarget:self withObject:nil];
-(void)loadTileMapInThread:(id)argument
{
NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
CCGLView *view = (CCGLView*)[[CCDirector sharedDirector] view];
EAGLContext *auxGLcontext = [[EAGLContext alloc]
initWithAPI:kEAGLRenderingAPIOpenGLES2
sharegroup:[[view context] sharegroup]];
if( [EAGLContext setCurrentContext:auxGLcontext] ) {
[self LoadTilesMap];
glFlush(); //whn I comment this also..flash observed
[EAGLContext setCurrentContext:nil];
} else {
CCLOG(@"cocos2d: ERROR: TetureCache: Could not set EAGLContext");
}
[auxGLcontext release];
[autoreleasepool release];
}
答案 0 :(得分:3)
通过异步加载tilemap,您只是在短时间内替换加载时间中断,其中cocos2d没有任何要渲染的内容 - 直到加载新的tilemap。我猜测线程不是一个解决方案,它只是给你一个不同的症状同样的问题。
我认为解决这个问题的方法是:
如果你只是因为他们消耗的内存而无法加载所有的图块地图,而其他选项也无法运行,除非你可以实现自己的内存优化版本的tilemap系统,否则你运气不好。 / p>