Cocos2d-x实用方法整理

前端之家收集整理的这篇文章主要介绍了Cocos2d-x实用方法整理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

【说明】

本篇整理学习过程中用到的一些小技巧,以便之后使用,后续不断补充。

【1. Cocos2d-x 3.x截屏】

  1. utils::captureScreen(CC_CALLBACK_2(HelloWord::screenShareEx,this),"screen.png");

【2. 获取本地时间】

  1. //获取UNIX时间(时间戳)
  2. std::stringgetUnixTime()
  3. {
  4. //获取时间
  5. time_ttimep;
  6. time(&timep);
  7. longlTime=timep;
  8. charsTime[16]={0};
  9. sprintf(sTime,"%ld",lTime);
  10. returnsTime;
  11. }
  12. //获取本地时间
  13. std::stringgetStandardTime()
  14. {
  15. //获取时间
  16. structtm*tm;
  17. time_ttimep;
  18. #if(CC_TARGET_PLATFORM==CC_PLATFORM_WIN32)
  19. time(&timep);
  20. #else
  21. structtimevaltv;
  22. gettimeofday(&tv,NULL);
  23. timep=tv.tv_sec;
  24. #endif
  25. tm=localtime(&timep);
  26. intyear=tm->tm_year+1900;
  27. intmonth=tm->tm_mon+1;
  28. intday=tm->tm_mday;
  29. inthour=tm->tm_hour;
  30. intminute=tm->tm_min;
  31. intsecond=tm->tm_sec;
  32. charsTime[16]={0};
  33. sprintf(sTime,"%04d%02d%02d%02d%02d%02d",year,month,day,hour,minute,second);
  34. returnsTime;
  35. }
也可以这样写:
  1. //获取本地时间戳
  2. intgetTimeStamp()
  3. {
  4. timevaltm;
  5. gettimeofday(&tm,NULL);
  6. returntm.tv_sec;//单位:秒
  7. //returntm.tv_usec;//单位:毫秒
  8. }
  9. //获取本地时间
  10. {
  11. time_tt=time(NULL);
  12. tm*lt=localtime(&t);
  13. intyear=lt->tm_year+1900;//相对1900年的过去的年数
  14. intmonth=lt->tm_mon+1;//1月份:为0
  15. intyday=lt->tm_yday;//年第几天:从1开始
  16. intmday=lt->tm_mday;//月第几天:从1开始
  17. intwday=lt->tm_wday;//周第几天:从1开始
  18. inthh=lt->tm_hour;//时
  19. intmm=lt->tm_min;//分
  20. intss=lt->tm_sec;//秒
  21. printf("%d%d\n",month);
  22. printf("%d%d%d\n",yday,mday,wday);
  23. printf("%d%d%d\n",hh,mm,ss);
  24. }
【3. Android横屏竖屏】
  1. //横屏
  2. android:screenOrientation="landscape"
  3. //竖屏
  4. android:screenOrientation="portrait"
【4. Android获取机器码】
  1. //做应用时很多时候都得获取到每个设备的机器码
  2. Secure.getString(getContext().getContentResolver(),Secure.ANDROID_ID)
  3. //正常情况下,你想得到设备的唯一序号,TelephonyManager.getDeviceId()就足够了。
  4. //但会暴露DeviceID,最好把这些id加密。加密后的序号仍然可以唯一的识别该设备,
  5. //例如,使用String.hashCode(),结合UUID:
  6. finalTelephonyManagertm=(TelephonyManager)getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
  7. finalStringtmDevice,tmSerial,tmPhone,androidId;
  8. tmDevice=""+tm.getDeviceId();
  9. tmSerial=""+tm.getSimSerialNumber();
  10. androidId=""+android.provider.Settings.Secure.getString(getContentResolver(),android.provider.Settings.Secure.ANDROID_ID);
  11. UUIDdeviceUuid=newUUID(androidId.hashCode(),((long)tmDevice.hashCode()<<32)|tmSerial.hashCode());
  12. StringuniqueId=deviceUuid.toString();
  13. //最后的deviceID可能是这样的结果:00000000-54b3-e7c7-0000-000046bffd97

【5. 创建文件夹】

  1. //创建文件夹,在AssertManager里面有源码
  2. mkdir(pszPath.c_str(),S_IRWXU|S_IRWXG|S_IRWXO);
  1. //具体实现代码
  2. #include<sys/stat.h>
  3. #include<dirent.h>
  4. boolcreateDirectory(conststd::string&dirpath)
  5. {
  6. #if(CC_TARGET_PLATFORM!=CC_PLATFORM_WIN32)
  7. DIR*pDir=opendir(dirpath.c_str());//打开目录
  8. if(!pDir)
  9. {
  10. //如果目录不存在,则创建目录
  11. intret=mkdir(dirpath.c_str(),S_IRWXU|S_IRWXG|S_IRWXO);
  12. if(ret!=0&&errno!=EEXIST)
  13. {
  14. returnfalse;
  15. }
  16. }
  17. returntrue;
  18. #else
  19. if((GetFileAttributesA(dirpath.c_str()))==INVALID_FILE_ATTRIBUTES)
  20. {
  21. BOOLret=CreateDirectoryA(dirpath.c_str(),NULL);
  22. if(!ret&&ERROR_ALREADY_EXISTS!=GetLastError())
  23. {
  24. returnfalse;
  25. }
  26. }
  27. returntrue;
  28. #endif
  29. }
  1. </pre><strong><spanstyle="font-size:18px">【6.屏幕旋转】</span></strong><prename="code"class="cpp">//屏幕旋转
  2. //可以通过getDeviceOrientation和setDeviceOrientation来分别获得屏幕的朝向和设置相应的屏幕朝向。
  3. //这个例子就是根据屏幕的朝向再通过setDeviceOrientation设置屏幕的朝向
  4. switch(s_currentOrientation)
  5. {
  6. caseCCDeviceOrientationLandscapeLeft:
  7. s_currentOrientation=CCDeviceOrientationPortrait;
  8. break;
  9. caseCCDeviceOrientationPortrait:
  10. s_currentOrientation=CCDeviceOrientationPortraitUpsideDown;
  11. break;
  12. caseCCDeviceOrientationPortraitUpsideDown:
  13. s_currentOrientation=CCDeviceOrientationLandscapeLeft;
  14. break;
  15. }
  16. CCDirector::shareDirector()->setDeviceOrientation(s_currentOrientation);

【7. 随机浮点数】

  1. #defineRAND_LIMIT32767
  2. floatRandomFloat()
  3. {
  4. floatr=(float)(std::rand()&(RAND_LIMIT));
  5. r/=RAND_LIMIT;
  6. r=2.0f*r-1.0f;
  7. returnr;
  8. }
【8. 使用了scrollview出现白屏】
  1. //用了scrollview和pageview的场景在小米,华为等手机跑显示不正常,会大部分白屏。
  2. //把这个文件AppActivity.java里的内容改成这样
  3. importorg.cocos2dx.lib.Cocos2dxActivity;
  4. importorg.cocos2dx.lib.*;
  5. publicclassAppActivityextendsCocos2dxActivity
  6. {
  7. publicCocos2dxGLSurfaceViewonCreateView()
  8. {
  9. Cocos2dxGLSurfaceViewglSurfaceView=newCocos2dxGLSurfaceView(this);
  10. //glSurfaceView.setEGLConfigChooser(5,6,5,16,8);
  11. glSurfaceView.setEGLConfigChooser(8,8,8);
  12. returnglSurfaceView;
  13. }
  14. }

来自:http://blog.csdn.net/ldpjay/article/details/46986377

猜你在找的Cocos2d-x相关文章