我正在用Cocos2d-x编写一个跨平台的应用程序。我需要花时间在一天的特定时间创建一个倒计时钟。因为它是用C ++编写的,所以如果我需要直接的方法,我可以使用time(...),mktime(...)和difftime(...)。
Cocos2d-x中是否有一种首选方法可以跨平台方式(即直接构建到框架中)?我希望该应用程序在iPhone,iPad和Android上的工作方式相同。
答案 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;
}