cocos2d x獲取系統時間

2021-06-19 03:15:27 字數 1348 閱讀 2279

之前使用過cocos2d-x獲取系統時間,毫秒級的

long getcurrenttime()   

或者這樣寫

long getcurrenttime()   

上面兩種實現應該都是沒有問題的~~~之前獲取時間的主要作用是給隨機函式做種子,或者計算fps,或者作為自己的定時器使用~這些都沒有問題

後來有專案需要獲取年月日等時間,這些怎麼來計算呢?

void gettime()

這樣可以獲取年月日時分秒

但是本人在win32上獲取的年月日是1970-1-1,時分秒也是不對的,本人使用的是cocos2d-x2.1.3版本

debug發現cctime::gettimeofdaycocos2d(&now, null); 該方法獲取的now.tv_sec資料很短,轉換下也就幾個小時,

找到cctime::gettimeofdaycocos2d方法的實現,發現也是呼叫了gettimeofday這個方法

繼續找,發現win32平台下的該方法的實現

int gettimeofday(struct timeval * val, struct timezone *)

return 0;

}

**如下

@@ -30,20 +30,11 @@ int cc_dll gettimeofday(struct timeval * val, struct timezone *)

return 0;

}

可以發現以前該方法的實現是使用了getlocaltime來獲取本地時間,然後進行計算的,如果按照這樣的實現方法,本人之前寫的gettime()方法應該能獲取到正確的年月日時分秒,但是上述**為了使獲取的時間更為精確,使用了

queryperformancefrequency( &lifreq );

queryperformancecounter( &litime );

兩個方法,queryperformancecounter( &litime );這個方法,是計算cpu執行到現在的時間,所以很明顯本人獲取的時間是開機到現在的時間,本人計算了下,還真是差不多~

所以可以理解,win32下gettimeofday方法的實現被官方這麼修改過之後是不能獲取到準確的年月日時分秒的

如果要獲取準確的資料,可以使用以下方法

void gettime(int level)

這回win32平台上ok了,至於其他平台上有沒有問題,要測試下~

cocos2d x 時間排程

在遊戲中,時常需要隔一段時間更新一些資料或者是人物位置,cocos2d x 中提供了這些時間排程的函式,所有ccnode 類的子類都有這樣的函式。schedule schedule selector schedulerautoremove autoremove 0.5f unschedule sch...

cocos2dx 獲取裝置語言

聲 明 歡迎回到 和屌絲一起學cocos2dx 上節我們說到了乙個我們會很常用的控制項 cccontrolbutton 不知道大家掌握的怎麼樣了呢?今天我們又要開始新的內容的學習了哦。大家可要跟上腳步啊。今天我們要說的這個知識點很簡單,但是也不能忽略哦。好了,就不賣關子了,今天和大家一起 獲取裝置語...

cocos2d x 獲取紋理資料

s sprite create res gire.png s setposition visiblesize 2 this addchild s auto id s gettexture getname int format,width,height glgettexlevelparameteriv...