ios - 在 cocos2d 中显示不滞后或卡顿的加载图形

标签 ios iphone cocos2d-iphone

在某些情况下,我想在我的 cocos2d iPhone 游戏准备就绪时显示某种加载图形/屏幕。例如,它可能在新场景的 init 方法中创建 CCSprite 对象,通过 [[CCTextureCache sharedTextureCache] addImage:fnTexture];

不幸的是,所有这些操作都需要在cocos显示线程上运行。这意味着我为创建一些漂亮的动画(例如,旋转的图形)所做的任何尝试在线程工作时基本上都会锁定,并且我漂亮的动画会卡住。

我可以想到三种可能的解决方案...

  1. 在昂贵的操作之间插入人为延迟,让我的动画有时间更新。不幸的是,这仍然会导致动画不稳定,并且肯定会散发出“代码味”。
  2. 以某种方式为动画创建一个短暂的第二个 cocos2d 渲染线程...?我找不到任何关于这是否可行的文档。
  3. 使用普通的旧 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];

给我这个:

enter image description here

它通过一些相当强烈的纹理预加载和场景设置/计算来实现出色的动画效果。您可以弄清楚“如何集成”到您的应用程序中... API 很好(委托(delegate)等...)

关于ios - 在 cocos2d 中显示不滞后或卡顿的加载图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20844189/

相关文章:

iphone - iOS 中的 Facebook 发布错误

ios - 如何添加按钮点击次数并在字典中计数

objective-c - 将.app集成到另一个应用程序的UIViewcontroller中

iphone - 如何将数值附加到数组

iphone - 带有 UIPanGestureRecognizer 的多点触控

iphone - 键值观察对 UITextView 的 Text 属性有效吗?

cocos2d-iphone - 使用 Cocos2d 进行 UIAutomation 测试,可能吗?

ruby-on-rails - 自己使用 facebook iOS 客户端授权到服务器

ios - 如何解决 imgly-sdk-ios 缺少 libpods 文件的问题?

objective-c - 动画与帧速率无关