iphone - Cocos2d更新功能等效吗?

标签 iphone ios objective-c ipad function

我正在寻找与 cocos2d update:(ccTime)delta 函数等效的函数,以便在没有 cocos2d 的情况下使用。我需要每秒执行尽可能多次的检查。是否有像这样或drawRect这样的 native 函数可以尽可能频繁地调用,以便我可以使用?

伪代码:

timeElapsed += delta;
if (timeElapsed > beatTime)
{
    timeElapsed = 0;
    beat++;
    for (SoundBlock* block in blocks)
    {
        [block play];
    }
}

本质上,我想每秒尽可能多次地执行这样的检查。

最佳答案

您可能不想尽快检查某些内容,因为这会导致性能问题。

如果您想要随显示器更新的内容,您可以使用 CADisplayLink 。您可以通过谷歌搜索示例,例如 one .

如果不需要链接显示刷新,可以设置NSTimer ,或使用 performSelector:withObject:afterDelay 的变体.

如果您需要高分辨率计时器,请查看 this technical note .

NSTimer 和 PerformSelector 的分辨率都在 50-100 ms 左右,这对于声音播放来说是不够的。

我建议您使用带有 mach_wait_until() 的单独实时线程,如技术说明中所述。使用技术说明中的 list 2 中的代码,使用 play_beat()BEATS_PER_SEC 播放一次声音,将如下所示:

void play_beat_thread(int argc, const char * argv[])
{
    mach_timebase_info(&timebase_info);
    uint64_t time_to_wait = nanos_to_abs(10ULL * BEATS_PER_SEC);
    uint64_t next = mach_absolute_time();
    while (true)
    {
        next = next + time_to_wait;
        mach_wait_until(next);
        play_beat();
    }
}

如果您需要有关高分辨率音频计时的更多建议,我建议您按照“如何在 iOS/OS X 上手动安排高分辨率音频播放”来重新组织此问题。

>

关于iphone - Cocos2d更新功能等效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17644664/

相关文章:

iphone - 如何使用 xcodebuild 存档 iOS 版本?

iphone - 控制其他应用程序的音量

iphone - 如何在 iTunes AppStore 中提交仅提供西类牙语的应用程序?

ios - 更改 MBProgressHUD Loader 的位置

iphone - 一种在压缩前从 UIImagePickerController 检查所选视频文件的方法?

objective-c - 如何在 iOS 上使用 AudioUnit.framework 配置帧大小

objective-c - UITabBarController 中的 UINavigationController - 转到选项卡选择的顶部

iphone - OpenGL ES;渲染从 CGBitmapContext 创建的纹理

ios - Ipad 上的 Adwhirl 和 InMobi

iphone - 将 UIWebView 适配到 UITableViewCell