Cocos2d-x3.1中FileUtils的使用:本使用教程是基于HelloWorld的。仅仅需在HelloWorld的init()函数中加入例如以下代码

  1. //头文件
  2. #include "platform/CCFileUtils.h"//FileUtils头文件
  3. #include <stdio.h>//使用文件操作
  4. #include "deprecated/CCDictionary.h"//字典类
  5. //下面各Test依次运行
  6. //Test1:TestResolutionDirectories測试解决方式文件夹
  7. // auto sharedFileUtils = FileUtils::getInstance();//创建单例对象
  8. // std::string ret;
  9. // sharedFileUtils->purgeCachedEntries();//清理文件,查找缓存
  10. // auto _defaultSearchPathArray = sharedFileUtils->getSearchPaths();//获取一组查找路径,返回数组类型
  11. // std::vector<std::string> searchPaths = _defaultSearchPathArray;
  12. // searchPaths.insert(searchPaths.begin(), "Misc");//加入查找路径
  13. // sharedFileUtils->setSearchPaths(searchPaths);//设置查找路径。能够是相对路径,也但是绝对路径
  14. // //<span style="font-family: Roboto, sans-serif; font-size: 14px; line-height: 22px;">获取包括资源查找顺序的array</span>
  15. // auto _defaultResolutionsOrderArray = sharedFileUtils->getSearchResolutionsOrder();
  16. // std::vector<std::string> resolutionsOrder = _defaultResolutionsOrderArray;
  17. // //插入查找顺序
  18. // resolutionsOrder.insert(resolutionsOrder.begin(), "resources-ipadhd");
  19. // resolutionsOrder.insert(resolutionsOrder.begin()+1, "resources-ipad");
  20. // resolutionsOrder.insert(resolutionsOrder.begin()+2, "resources-widehd");
  21. // resolutionsOrder.insert(resolutionsOrder.begin()+3, "resources-wide");
  22. // resolutionsOrder.insert(resolutionsOrder.begin()+4, "resources-hd");
  23. // resolutionsOrder.insert(resolutionsOrder.begin()+5, "resources-iphone");
  24. // //<span style="font-family: Roboto, sans-serif; font-size: 14px; line-height: 22px;">设置包括资源查找路径的array</span>
  25. // sharedFileUtils->setSearchResolutionsOrder(resolutionsOrder);
  26. //
  27. // for(int i = 1; i < 7; i++)
  28. // {
  29. // auto filename = String::createWithFormat("test%d.txt",i);
  30. // ret = sharedFileUtils->fullPathForFilename(filename->getCString());//查找资源路径
  31. // log("%s -> %s",filename->getCString(),ret.c_str());//打印资源路径
  32. // }
  33.  
  34. //Test2:TestSearchPath 測试寻找路径
  35. // auto sharedFileUtils = FileUtils::getInstance();
  36. // std::string ret;
  37. // sharedFileUtils->purgeCachedEntries();
  38. // auto _defaultSearchPathArray = sharedFileUtils->getSearchPaths();
  39. // std::vector<std::string> searchPaths = _defaultSearchPathArray;
  40. // std::string writablePath = sharedFileUtils->getWritablePath();//改行以上同上
  41. // std::string fileName = writablePath + "external.txt";//设置可写文件路径
  42. // char szBuf[100] = "Hello Cocos2d-x";//写的内容
  43. // FILE* fp = fopen(fileName.c_str(), "wb");//打开路径下得文件
  44. // if(fp)
  45. // {
  46. // size_t ret = fwrite(szBuf, 1, strlen(szBuf), fp);//写过程
  47. // CCASSERT(ret != 0, "fwrite function returned zero value");//断言
  48. // fclose(fp);
  49. // if (ret != 0) {
  50. // log("Writing file to writable path succeed.");
  51. // }
  52. // }
  53. // //加入查找路径
  54. // searchPaths.insert(searchPaths.begin(), writablePath);
  55. // searchPaths.insert(searchPaths.begin()+1, "Misc/searchpath1");
  56. // searchPaths.insert(searchPaths.begin()+2, "Misc/searchpath2");
  57. // sharedFileUtils->setSearchPaths(searchPaths);//设置查找路径
  58. // //<span style="font-family: Roboto, sans-serif; font-size: 14px; line-height: 22px;">获取包括资源查找顺序的array</span>
  59. // auto _defaultResolutionsOrderArray = sharedFileUtils->getSearchResolutionsOrder();
  60. // std::vector<std::string> resolutionsOrder = _defaultResolutionsOrderArray;
  61. // resolutionsOrder.insert(resolutionsOrder.begin(), "resources-ipad");//插入查找顺序
  62. // sharedFileUtils->setSearchResolutionsOrder(resolutionsOrder);//设置查找顺序
  63. //
  64. // for(int i = 1; i < 3; i++)
  65. // {
  66. // auto filename = String::createWithFormat("file%d.txt",i);//同上
  67. // ret = sharedFileUtils->fullPathForFilename(filename->getCString());
  68. // log("%s -> %s",filename->getCString(),ret.c_str());
  69. // }
  70. //
  71. // std::string fullPath = sharedFileUtils->fullPathForFilename("external.txt");
  72. // log("external.txt file path = %s",fullPath.c_str());
  73. // if (fullPath.length() > 0) {
  74. // fp = fopen(fullPath.c_str(), "rb");
  75. // if(fp)
  76. // {
  77. // char szReadBuf[100] = {0};
  78. // size_t read = fread(szReadBuf, 1, strlen(szBuf), fp);//读上面写成功的文件
  79. // if(read > 0)
  80. // log("The content of file from writeable path:%s",szReadBuf);
  81. // fclose(fp);
  82. // }
  83. // }
  84.  
  85. //Test3:TestFilenameLookup
  86. // auto sharedFileUtils = FileUtils::getInstance();
  87. //
  88. // ValueMap dict;//ValueMap类型,相似于C++的Map,键值对
  89. // dict["grossini.bmp"] = Value("CloseNormal.png");
  90. // dict["grossini.xcf"] = Value("CloseSelected.png");
  91. // //<span style="font-family: Roboto, sans-serif; font-size: 14px; line-height: 22px;">设置文件查找词典,參数是替代文件名称的字典</span>
  92. // sharedFileUtils->setFilenameLookupDictionary(dict);
  93. //
  94. // // Instead of loading carlitos.xcf, it will load grossini.png
  95. // auto sprite = Sprite::create("grossini.xcf");
  96. // this->addChild(sprite);
  97. //
  98. // auto s = Director::getInstance()->getWinSize();
  99. // sprite->setPosition(Vec2(s.width/2, s.height/2));
  100.  
  101. //Test4:TestIsFileExist 測试文件是否存在
  102. // auto s = Director::getInstance()->getWinSize();
  103. // auto sharedFileUtils = FileUtils::getInstance();
  104. //
  105. // Label* pTTF = nullptr;
  106. // bool isExist = false;
  107. //
  108. // isExist = sharedFileUtils->isFileExist("CloseSelected.png");
  109. //
  110. // pTTF = Label::createWithSystemFont(isExist ?
  111.  
  112. "CloseSelected.png exists" : "CloseSelected.png doesn't exist", "", 20);
  113. // pTTF->setPosition(Vec2(s.width/2, s.height/3));
  114. // this->addChild(pTTF);
  115. //
  116. // isExist = sharedFileUtils->isFileExist("CloseNormal.png");
  117. // pTTF = Label::createWithSystemFont(isExist ?
  118.  
  119. "CloseNormal.png exists" : "CloseNormal.png doesn't exist", "", 20);//条件语句
  120. // pTTF->setPosition(Vec2(s.width/2, s.height/3*2));
  121. // this->addChild(pTTF);
  122.  
  123. //Test5:TextWritePlist 写Plist文件
  124. auto root = __Dictionary::create();//创建一个字典类对象
  125. auto string = __String::create("string element value");//创建一个String类对象
  126. root->setObject(string, "string element key");//root加入string类型键值对
  127. auto array = __Array::create();//创建一个Array对象
  128. auto dictInArray = __Dictionary::create();//创建一个字典类对象
  129. dictInArray->setObject(__String::create("string in dictInArray value 0"), "string in dictInArray key 0");//为字典类对象加入键值对
  130. dictInArray->setObject(__String::create("string in dictInArray value 1"), "string in dictInArray key 1");
  131. array->addObject(dictInArray);//将字典类对象加入到数组
  132.  
  133. array->addObject(String::create("string in array"));//将String对象加入到数组
  134.  
  135. auto arrayInArray = __Array::create();//创建Array类对象
  136. arrayInArray->addObject(__String::create("string 0 in arrayInArray"));//为Array类对象加入成员
  137. arrayInArray->addObject(__String::create("string 1 in arrayInArray"));
  138. array->addObject(arrayInArray);//将Array对象加入到array对象
  139.  
  140. root->setObject(array, "array");//root加入Array类键值对
  141.  
  142. auto dictInDict = __Dictionary::create();//创建字典类对象
  143. dictInDict->setObject(__String::create("string in dictInDict value"), "string in dictInDict key");//加入键值对
  144.  
  145. //add boolean to the plist
  146. auto booleanObject = Bool::create(true);//创建Bool对象
  147. dictInDict->setObject(booleanObject, "bool");//加入Bool类型键值对
  148.  
  149. //add interger to the plist
  150. auto intObject = Integer::create(1024);
  151. dictInDict->setObject(intObject, "integer");//加入Integer类型键值对
  152.  
  153. //add float to the plist
  154. auto floatObject = Float::create(1024.1024f);
  155. dictInDict->setObject(floatObject, "float");//加入float类型键值对
  156.  
  157. //add double to the plist
  158. auto doubleObject = Double::create(1024.123);//加入double类型键值对
  159. dictInDict->setObject(doubleObject, "double");
  160.  
  161. root->setObject(dictInDict, "dictInDict, Hello World");//root加入字典类键值对
  162.  
  163. // end with /
  164. std::string writablePath = FileUtils::getInstance()->getWritablePath();
  165. std::string fullPath = writablePath + "text.plist";
  166. //将plist文件写入到路径下得文件里
  167. if(root->writeToFile(fullPath.c_str()))
  168. log("see the plist file at %s", fullPath.c_str());
  169. else
  170. log("write plist file failed");
  171.  
  172. // //创建TTF,显示plist文件路经
  173. auto label = Label::createWithTTF(fullPath.c_str(), "Thonburi.ttf", 30);
  174. this->addChild(label);
  175. auto winSize = Director::getInstance()->getWinSize();
  176. label->setPosition(Vec2(winSize.width/2, winSize.height/3));
  177. //<span style="font-family: Roboto, sans-serif; font-size: 14px; line-height: 22px;">依据plist文件创建一个dictionary.</span>
  178. auto loadDict = __Dictionary::createWithContentsOfFile(fullPath.c_str());
  1. //依据键值。读取Dictionary的值,然后依据键再读取里面的值
  1. auto loadDictInDict = (__Dictionary*)loadDict->objectForKey("dictInDict, Hello World");
  2. auto boolValue = (__String*)loadDictInDict->objectForKey("bool");
  3. CCLOG("%s",boolValue->getCString());//控制台打印
  4. auto floatValue = (__String*)loadDictInDict->objectForKey("float");
  5. CCLOG("%s",floatValue->getCString());
  6. auto intValue = (__String*)loadDictInDict->objectForKey("integer");
  7. CCLOG("%s",intValue->getCString());
  8. auto doubleValue = (__String*)loadDictInDict->objectForKey("double");
  9. CCLOG("%s",doubleValue->getCString());

很多其它关于__Dictionary以及FileUtils可參考Cocos2d-x的API文档

http://cn.cocos2d-x.org/doc/cocos2d-x-3.0/d0/d1a/classcocos2d_1_1_____dictionary.html#a9b09179c67f6919b779b9aa656274e33

Cocos2d-x3.1FileUtilsTest使用的更多相关文章

  1. cocos2d-x3.0创建第一个jsb游戏

    第一步: 最新的cocos2d-x.下载地址https://github.com/cocos2d/cocos2d-x github上最新的引擎,值得注意的是官网上发布的引擎是稳定版.选择哪种就看个人喜 ...

  2. 小尝试一下 cocos2d

    好奇 cocos2d 到底是怎样一个框架,正好有个项目需要一个游戏框架,所以稍微了解了一下.小结一下了解到的情况. 基本概念 首先呢,因为 cocos2d 是基于 pyglet 做的,你完全可以直接用 ...

  3. 采用cocos2d-x lua 制作数字滚动效果样例

    require "Cocos2d"require "Cocos2dConstants"local testscene = class("testsce ...

  4. Cocos2d 利用继承Draw方法制作可显示三维数据(宠物三维等)的三角形显示面板

    很久没有写博客了,这段时间比较忙,又是搬家又是做自己的项目,还有太多琐碎的事情缠身,好不容易抽出时间把最近自己做的一些简单例子记录一下. 在我的项目中,我需要一个显示面板来显示游戏中的一个三维数据,例 ...

  5. iPhone开发与cocos2d 经验谈

    转CSDN jilongliang : 首先,对于一个完全没有mac开发经验,甚至从没摸过苹果系统的开发人员来说,首先就是要熟悉apple的那一套开发框架(含开发环境IDE.开发框架uikit,还有开 ...

  6. 点(x3,y3)到经过点(x1,y1)和点(x2,y2)的直线的最短距离

    /// <summary> /// 点(x3,y3)到经过点(x1,y1)和点(x2,y2)的直线的最短距离 /// </summary> /// <param name ...

  7. cocos2d学习记录

    视频 - http://www.manew.com/forum-105-3.html一个论坛帖 - http://www.zhihu.com/question/21114802官网 - http:// ...

  8. Android下Cocos2d创建HelloWorld工程

    最近在搭建Cocos2d的环境,结果各种问题,两人弄了一天才能搞好一个环境-! -_-!! 避免大家也可能会遇到我这种情况,所以写一个随笔,让大家也了解下如何搭建吧- 1.环境安装准备 下载 tadp ...

  9. 学生信息管理系统(cocos2d引擎)——数据结构课程设计

    老师手把手教了两天半,看了一下模式,加了几个功能就大功告成了!!! 给我的感想就是全都是指针! 添加图片精灵: CCSprite*  spBG = CCSprite::create("&qu ...

  10. Discuz! X3.1直接进入云平台列表的方法

    Discuz! X3.1已经改版,后台不能直接进云平台列表,不方便操作,操作云平台服务时,大家可以这样操作: 1.登录后台:2.访问域名进入云平台列表http://你域名/admin.php?fram ...

随机推荐

  1. luoguP1040 区间DP(记忆化 加分二叉树

    dp[l][r]记录中序序列为l, l+1..r的最大加分值 root[l][r]记录这个序列的根节点 转移 i 为根节点 dp[l][r] = max(dp[l][i-1]*dp[l+1][r]+a ...

  2. 【CF1023A】Single Wildcard Pattern Matching(模拟)

    题意:给定两个串s与t,其中s可能有至多一个通配符*可以被当做任意长度与内容的串,问t能否与s匹配 n,m<=2e5 思路: #include<cstdio> #include< ...

  3. 【CF696B】Puzzles(树形DP,期望)

    题意:n 个节点的树,初始位置为 1 号节点,初始时间为 1.每次随机地走向任何一个没有走过的子树并且令时间 +1求问走到每一个点时的时间的期望值 思路:比较少见的一道自顶向下的树形DP dp[i]表 ...

  4. WebRTC源码架构浅析(转)

    Google 在2010年花了6千8百万美元收购了大名鼎鼎的 Global IP Sound/Solutions (GIPS) 公司, 得到了它的 VoIP 相关技术的专利和软件. 第二年, Goog ...

  5. 計算 battery impedence

    Origin 一顆電池被拉載後,會產生電流及電壓如下圖, 如何計算其電池內阻呢 其公式為 R = |delta(V) / delta(I)| 公式推導如下: V1 = 10 - I1R --- 左圖 ...

  6. HRBUST 2064:萌萌哒十五酱的宠物~(最近公共祖先LCA)

    题意:一个n个点的树,询问某两点之间的简单路径,问路径上任选三边能否组成一个三角形. N<100000,权值<109 思路: 这里最神奇的思路过于以下这个: n个数,任意三个都不能组成三角 ...

  7. 在 Mac OS X 环境中从源代码编译安装 FFmpeg

    最近因为一个项目要求,需要开发实时视频编解码功能,准备采用 FFmpeg 以 x264 方式进行实时的视频编解码.Windows 以及 Linux 环境下的 FFmpeg 动态库.头文件等资源都非常容 ...

  8. 转载——Step by Step 创建一个 Web Service

    原创地址:http://www.cnblogs.com/jfzhu/p/4022139.html 转载请注明出处 (一)创建Web Service 创建第一个项目,类型选择ASP.NET Empty ...

  9. AC日记——网络最大流 洛谷 P3376

    题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...

  10. 洛谷—— P1849 [USACO12MAR]拖拉机Tractor

    https://www.luogu.org/problemnew/show/P1849 题目描述 After a long day of work, Farmer John completely fo ...