如何计算Cocos2dx中的毫秒数?

还原

在Cocos2dx中显示毫秒时有些挣扎。我想避免为不同的机器使用不同的代码库。

这适用于32位iPhone / iPod平台,但在64位上,它始终返回零秒,并且没有时间经过:

timeval time;
gettimeofday(&time, NULL);
unsigned long millisecs = (time.tv_sec * 1000) + (time.tv_usec / 1000);
return (float)millisecs;

此功能在64位iPhone / iPod平台和32位平台上具有相同的功能,但基于时钟周期,因此,如果用户收到短信或在后台打开程序,则时间会膨胀:

clock_t t;
t = clock();
return 10000.0 * ((float)t)/CLOCKS_PER_SEC;

这可以准确地计算时间,但仅以秒(而不是毫秒)为单位:

auto timeInMillis = std::time(nullptr);

我发现这样做的唯一方法是设置一个定期更新事件并将dt添加到一个float中(这似乎总是准确的),这是可以的,但并不理想。

基本上在更新中

timeElapsed += dt;

没关系,但是仅当正在进行持续的计时更新运行时,它才有效。

还原

在32位和64位设备以及它们如何报告时间方面似乎存在差异。在32位设备上正常工作的代码段:

timeval time;
gettimeofday(&time, NULL);
unsigned long millisecs = (time.tv_sec * 1000) + (time.tv_usec / 1000);

将在所有64位设备上将“ millisecs”设置为0。我发现的唯一可行的解​​决方案是使用一个名为“ _millisecs”的浮点值,并在我的update()函数的第一行中,将dt添加到_millisecs。这不会在函数内部提供准确的报告,但是它将随时精确报告自首次计划update()以来已经经过了多少时间。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在cocos2dx中更新openssl?

来自分类Dev

如何在cocos2dx中绘制任意曲线

来自分类Dev

如何在cocos2dx中复制动作

来自分类Dev

如何在cocos2dx 3中摇动屏幕?

来自分类Dev

如何在cocos2dx中绘制圆

来自分类Dev

cocos2dx中的覆盖功能

来自分类Dev

使用Cocos2dx

来自分类Dev

如何在C ++中的Cocos2dx中为iOS游戏制作滑动菜单

来自分类Dev

如何在Cocos2dx 3.1中添加触摸事件监听器?

来自分类Dev

如何在cocos2dx 3.0中调用callfunc函数

来自分类Dev

如何使用C ++在cocos2dx中的游戏中创建计时器

来自分类Dev

在CoCos2dx中,如何一起使用admob和Google Play服务

来自分类Dev

如何在cocos2dx C ++ v3.10中更改Sprite纹理?

来自分类Dev

Sprite如何在cocos2dx中以编程方式进行修剪?

来自分类Dev

如何在cocos2dx 3.0 beta中创建项目?

来自分类Dev

如何比较cocos2dx中的float和Size变量内容?

来自分类Dev

如何在cocos2dx中创建多边形以显示运行编号

来自分类Dev

在CoCos2dx中,如何一起使用admob和Google Play服务

来自分类Dev

如何在cocos2dx中打印二维数组

来自分类Dev

如何在Ubuntu 13.04上安装cocos2dx?

来自分类Dev

如何在Ubuntu 13.04上安装cocos2dx?

来自分类Dev

如何在cocos2dx中使用CCTargetedTouchDelegate?

来自分类Dev

如何在Eclipse中导入cocos2dx项目

来自分类Dev

如何减慢cocos2dx游戏的所有动作

来自分类Dev

如何访问嵌套的 plist 目录 cocos2dx?

来自分类Dev

在Cocos2dx中创建Button列表

来自分类Dev

无法解析Cocos2dx 3.0中的plist

来自分类Dev

在Cocos2dx 3.0中的Sprite上设置TexParams

来自分类Dev

UIImage到cocos2dx中的Sprite?