有没有一种在cocos2d-x中获取系统时间的首选方法?

时间:2013-12-10 11:17:07

标签: android cocos2d-x cocos2d-x-3.0

我正在用Cocos2d-x编写一个跨平台的应用程序。我需要花时间在一天的特定时间创建一个倒计时钟。因为它是用C ++编写的,所以如果我需要直接的方法,我可以使用time(...),mktime(...)和difftime(...)。

Cocos2d-x中是否有一种首选方法可以跨平台方式(即直接构建到框架中)?我希望该应用程序在iPhone,iPad和Android上的工作方式相同。

5 个答案:

答案 0 :(得分:5)

试试这个:

time_t rawtime;
struct tm * timeinfo;
time (&rawtime);
timeinfo = localtime (&rawtime);

CCLog("year------->%04d",timeinfo->tm_year+1900);
CCLog("month------->%02d",timeinfo->tm_mon+1);
CCLog("day------->%02d",timeinfo->tm_mday);

CCLog("hour------->%02d",timeinfo->tm_hour);
CCLog("minutes------->%02d",timeinfo->tm_min);
CCLog("seconds------->%02d",timeinfo->tm_sec);

答案 1 :(得分:1)

试试此代码

static inline long millisecondNow()
{
    struct cc_timeval now;
    CCTime::gettimeofdayCocos2d(&now, NULL);
    return (now.tv_sec * 1000 + now.tv_usec / 1000);
}

我使用此函数以毫秒为单位获取当前时间。我是cocos2d-x的新手,所以希望这会有所帮助。

答案 2 :(得分:1)

你应该尝试这个lib,我刚刚测试过,它运行正常。

https://github.com/Ghost233/CCDate

如果收到错误值,请设置timezoneOffset = 0;

注意:0 <=月&lt; = 11

答案 3 :(得分:0)

你可以在时钟课上进行更新。

使用float参数进行更新调用,该参数是上次调用后的增量时间(以秒为单位),每个帧调用此方法,cocos2d-x从系统中获取时间并计算增量。

答案 4 :(得分:0)

我认为这段代码可以解决问题:

静态内联long millisecondNow() {     struct cc_timeval now;     CCTime :: gettimeofdayCocos2d(&amp; now,NULL);     return(now.tv_sec * 1000 + now.tv_usec / 1000); }

HOWEVER ,只提供我需要的一部分。一般来说,我需要一个真正的“日期和时间”对象(或结构),而不仅仅是以毫秒为单位的时间。

目前,最佳解决方案似乎是在C ++中使用“经典”localtime,mktime,difftime三连胜。我在下面有几个基本操作的例子......我可以做一个普通班来做这些操作,但是现在,这些是一个好的开始,并展示如何移动:

double Utilities::SecondsTill(int hour, int minute)
{
   time_t now;
   struct tm target;
   double seconds;

   time(&now);  

   target = *localtime(&now);

   target.tm_hour = hour;
   target.tm_min = minute;
   target.tm_sec = 0;

   seconds = difftime(mktime(&target),now);

   return seconds;
}

DAYS_OF_WEEK_T Utilities::GetDayOfWeek()
{
   struct tm tinfo;
   time_t rawtime;
   time (&rawtime);

   tinfo = *localtime(&rawtime);

   return (DAYS_OF_WEEK_T)tinfo.tm_wday;
}