3

我正在用 Cocos2d-x 编写一个跨平台的应用程序。我需要时间来创建一个倒计时时钟到一天中的某个时间。由于它是在 C++ 中,如果我需要作为直接方法,我可以使用 time(...)、mktime(...) 和 difftime(...)。

Cocos2d-x 中是否有一种首选方法可以跨平台执行此操作(即直接内置到框架中的东西)?我希望该应用程序在 iPhone、iPad 和 Android 上都能正常工作。

4

5 回答 5

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);
于 2014-01-07T14:28:29.593 回答
1

试试这个代码

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

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

于 2013-12-10T13:55:14.360 回答
1

你应该试试这个库,我刚刚测试过,它工作正常。

https://github.com/Ghost233/CCDate

如果您收到一些错误的值,请设置 timezoneOffset = 0;

注意:0 <= 月 <= 11

于 2013-12-28T08:43:52.927 回答
0

您可以在时钟类中进行 sheduleUpdate。

带有浮点参数的更新调用,它是上次调用后以秒为单位的增量时间,此方法每帧调用一次,cocos2d-x 从系统获取时间并计算增量。

于 2013-12-10T12:25:37.967 回答
0

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

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

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

目前,最好的解决方案似乎是在 C++ 中使用“经典”本地时间、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;
}
于 2013-12-19T14:59:02.527 回答