在某些情况下,我想在我的 cocos2d iPhone 游戏准备就绪时显示某种加载图形/屏幕。例如,它可能在新场景的 init
方法中创建 CCSprite
对象,通过 [[CCTextureCache sharedTextureCache] addImage:fnTexture];
等
不幸的是,所有这些操作都需要在cocos显示线程上运行。这意味着我为创建一些漂亮的动画(例如,旋转的图形)所做的任何尝试在线程工作时基本上都会锁定,并且我漂亮的动画会卡住。
我可以想到三种可能的解决方案...
- 在昂贵的操作之间插入人为延迟,让我的动画有时间更新。不幸的是,这仍然会导致动画不稳定,并且肯定会散发出“代码味”。
- 以某种方式为动画创建一个短暂的第二个 cocos2d 渲染线程...?我找不到任何关于这是否可行的文档。
- 使用普通的旧
UIView
粘贴到我的OpenGL
View 之上,它当然在主线程上运行,因此不受这些限制...但是,这需要弄清楚如何将我漂亮的动画编码到UIKit
中
#2 可能吗?或者...有没有更好的方法来解决这个问题?
最佳答案
在 git 上查看 MBProgressHUD。我做了一个像这样的快速测试(花了 3 分钟将其放入我的游戏中):
MBProgressHUD *hud = [[[MBProgressHUD alloc] init] autorelease];
hud.xOffset = kScreenWidth / 2;
hud.yOffset = kScreenHeight / 2;
hud.progress = .5;
[hud show:YES];
[hud setTaskInProgress:YES];
hud.labelText = @"Loading";
[[CCDirector sharedDirector].view addSubview:hud];
给我这个:
它通过一些相当强烈的纹理预加载和场景设置/计算来实现出色的动画效果。您可以弄清楚“如何集成”到您的应用程序中... API 很好(委托(delegate)等...)
关于ios - 在 cocos2d 中显示不滞后或卡顿的加载图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20844189/