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

//头文件
#include "platform/CCFileUtils.h"//FileUtils头文件
#include <stdio.h>//使用文件操作
#include "deprecated/CCDictionary.h"//字典类
//下面各Test依次运行
//Test1:TestResolutionDirectories測试解决方式文件夹
// auto sharedFileUtils = FileUtils::getInstance();//创建单例对象
// std::string ret;
// sharedFileUtils->purgeCachedEntries();//清理文件,查找缓存
// auto _defaultSearchPathArray = sharedFileUtils->getSearchPaths();//获取一组查找路径,返回数组类型
// std::vector<std::string> searchPaths = _defaultSearchPathArray;
// searchPaths.insert(searchPaths.begin(), "Misc");//加入查找路径
// sharedFileUtils->setSearchPaths(searchPaths);//设置查找路径。能够是相对路径,也但是绝对路径
// //<span style="font-family: Roboto, sans-serif; font-size: 14px; line-height: 22px;">获取包括资源查找顺序的array</span>
// auto _defaultResolutionsOrderArray = sharedFileUtils->getSearchResolutionsOrder();
// std::vector<std::string> resolutionsOrder = _defaultResolutionsOrderArray;
// //插入查找顺序
// resolutionsOrder.insert(resolutionsOrder.begin(), "resources-ipadhd");
// resolutionsOrder.insert(resolutionsOrder.begin()+1, "resources-ipad");
// resolutionsOrder.insert(resolutionsOrder.begin()+2, "resources-widehd");
// resolutionsOrder.insert(resolutionsOrder.begin()+3, "resources-wide");
// resolutionsOrder.insert(resolutionsOrder.begin()+4, "resources-hd");
// resolutionsOrder.insert(resolutionsOrder.begin()+5, "resources-iphone");
// //<span style="font-family: Roboto, sans-serif; font-size: 14px; line-height: 22px;">设置包括资源查找路径的array</span>
// sharedFileUtils->setSearchResolutionsOrder(resolutionsOrder);
//
// for(int i = 1; i < 7; i++)
// {
// auto filename = String::createWithFormat("test%d.txt",i);
// ret = sharedFileUtils->fullPathForFilename(filename->getCString());//查找资源路径
// log("%s -> %s",filename->getCString(),ret.c_str());//打印资源路径
// } //Test2:TestSearchPath 測试寻找路径
// auto sharedFileUtils = FileUtils::getInstance();
// std::string ret;
// sharedFileUtils->purgeCachedEntries();
// auto _defaultSearchPathArray = sharedFileUtils->getSearchPaths();
// std::vector<std::string> searchPaths = _defaultSearchPathArray;
// std::string writablePath = sharedFileUtils->getWritablePath();//改行以上同上
// std::string fileName = writablePath + "external.txt";//设置可写文件路径
// char szBuf[100] = "Hello Cocos2d-x";//写的内容
// FILE* fp = fopen(fileName.c_str(), "wb");//打开路径下得文件
// if(fp)
// {
// size_t ret = fwrite(szBuf, 1, strlen(szBuf), fp);//写过程
// CCASSERT(ret != 0, "fwrite function returned zero value");//断言
// fclose(fp);
// if (ret != 0) {
// log("Writing file to writable path succeed.");
// }
// }
// //加入查找路径
// searchPaths.insert(searchPaths.begin(), writablePath);
// searchPaths.insert(searchPaths.begin()+1, "Misc/searchpath1");
// searchPaths.insert(searchPaths.begin()+2, "Misc/searchpath2");
// sharedFileUtils->setSearchPaths(searchPaths);//设置查找路径
// //<span style="font-family: Roboto, sans-serif; font-size: 14px; line-height: 22px;">获取包括资源查找顺序的array</span>
// auto _defaultResolutionsOrderArray = sharedFileUtils->getSearchResolutionsOrder();
// std::vector<std::string> resolutionsOrder = _defaultResolutionsOrderArray;
// resolutionsOrder.insert(resolutionsOrder.begin(), "resources-ipad");//插入查找顺序
// sharedFileUtils->setSearchResolutionsOrder(resolutionsOrder);//设置查找顺序
//
// for(int i = 1; i < 3; i++)
// {
// auto filename = String::createWithFormat("file%d.txt",i);//同上
// ret = sharedFileUtils->fullPathForFilename(filename->getCString());
// log("%s -> %s",filename->getCString(),ret.c_str());
// }
//
// std::string fullPath = sharedFileUtils->fullPathForFilename("external.txt");
// log("external.txt file path = %s",fullPath.c_str());
// if (fullPath.length() > 0) {
// fp = fopen(fullPath.c_str(), "rb");
// if(fp)
// {
// char szReadBuf[100] = {0};
// size_t read = fread(szReadBuf, 1, strlen(szBuf), fp);//读上面写成功的文件
// if(read > 0)
// log("The content of file from writeable path:%s",szReadBuf);
// fclose(fp);
// }
// } //Test3:TestFilenameLookup
// auto sharedFileUtils = FileUtils::getInstance();
//
// ValueMap dict;//ValueMap类型,相似于C++的Map,键值对
// dict["grossini.bmp"] = Value("CloseNormal.png");
// dict["grossini.xcf"] = Value("CloseSelected.png");
// //<span style="font-family: Roboto, sans-serif; font-size: 14px; line-height: 22px;">设置文件查找词典,參数是替代文件名称的字典</span>
// sharedFileUtils->setFilenameLookupDictionary(dict);
//
// // Instead of loading carlitos.xcf, it will load grossini.png
// auto sprite = Sprite::create("grossini.xcf");
// this->addChild(sprite);
//
// auto s = Director::getInstance()->getWinSize();
// sprite->setPosition(Vec2(s.width/2, s.height/2)); //Test4:TestIsFileExist 測试文件是否存在
// auto s = Director::getInstance()->getWinSize();
// auto sharedFileUtils = FileUtils::getInstance();
//
// Label* pTTF = nullptr;
// bool isExist = false;
//
// isExist = sharedFileUtils->isFileExist("CloseSelected.png");
//
// pTTF = Label::createWithSystemFont(isExist ? "CloseSelected.png exists" : "CloseSelected.png doesn't exist", "", 20);
// pTTF->setPosition(Vec2(s.width/2, s.height/3));
// this->addChild(pTTF);
//
// isExist = sharedFileUtils->isFileExist("CloseNormal.png");
// pTTF = Label::createWithSystemFont(isExist ? "CloseNormal.png exists" : "CloseNormal.png doesn't exist", "", 20);//条件语句
// pTTF->setPosition(Vec2(s.width/2, s.height/3*2));
// this->addChild(pTTF); //Test5:TextWritePlist 写Plist文件
auto root = __Dictionary::create();//创建一个字典类对象
auto string = __String::create("string element value");//创建一个String类对象
root->setObject(string, "string element key");//root加入string类型键值对
auto array = __Array::create();//创建一个Array对象
auto dictInArray = __Dictionary::create();//创建一个字典类对象
dictInArray->setObject(__String::create("string in dictInArray value 0"), "string in dictInArray key 0");//为字典类对象加入键值对
dictInArray->setObject(__String::create("string in dictInArray value 1"), "string in dictInArray key 1");
array->addObject(dictInArray);//将字典类对象加入到数组 array->addObject(String::create("string in array"));//将String对象加入到数组 auto arrayInArray = __Array::create();//创建Array类对象
arrayInArray->addObject(__String::create("string 0 in arrayInArray"));//为Array类对象加入成员
arrayInArray->addObject(__String::create("string 1 in arrayInArray"));
array->addObject(arrayInArray);//将Array对象加入到array对象 root->setObject(array, "array");//root加入Array类键值对 auto dictInDict = __Dictionary::create();//创建字典类对象
dictInDict->setObject(__String::create("string in dictInDict value"), "string in dictInDict key");//加入键值对 //add boolean to the plist
auto booleanObject = Bool::create(true);//创建Bool对象
dictInDict->setObject(booleanObject, "bool");//加入Bool类型键值对 //add interger to the plist
auto intObject = Integer::create(1024);
dictInDict->setObject(intObject, "integer");//加入Integer类型键值对 //add float to the plist
auto floatObject = Float::create(1024.1024f);
dictInDict->setObject(floatObject, "float");//加入float类型键值对 //add double to the plist
auto doubleObject = Double::create(1024.123);//加入double类型键值对
dictInDict->setObject(doubleObject, "double"); root->setObject(dictInDict, "dictInDict, Hello World");//root加入字典类键值对 // end with /
std::string writablePath = FileUtils::getInstance()->getWritablePath();
std::string fullPath = writablePath + "text.plist";
//将plist文件写入到路径下得文件里
if(root->writeToFile(fullPath.c_str()))
log("see the plist file at %s", fullPath.c_str());
else
log("write plist file failed"); // //创建TTF,显示plist文件路经
auto label = Label::createWithTTF(fullPath.c_str(), "Thonburi.ttf", 30);
this->addChild(label);
auto winSize = Director::getInstance()->getWinSize();
label->setPosition(Vec2(winSize.width/2, winSize.height/3));
//<span style="font-family: Roboto, sans-serif; font-size: 14px; line-height: 22px;">依据plist文件创建一个dictionary.</span>
auto loadDict = __Dictionary::createWithContentsOfFile(fullPath.c_str());
    //依据键值。读取Dictionary的值,然后依据键再读取里面的值
    auto loadDictInDict = (__Dictionary*)loadDict->objectForKey("dictInDict, Hello World");
auto boolValue = (__String*)loadDictInDict->objectForKey("bool");
CCLOG("%s",boolValue->getCString());//控制台打印
auto floatValue = (__String*)loadDictInDict->objectForKey("float");
CCLOG("%s",floatValue->getCString());
auto intValue = (__String*)loadDictInDict->objectForKey("integer");
CCLOG("%s",intValue->getCString());
auto doubleValue = (__String*)loadDictInDict->objectForKey("double");
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. OSU!(bzoj 4318)

    Description osu 是一款群众喜闻乐见的休闲软件.  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1 ...

  2. js 判断变量是否为空

    js 判断变量是否为空 欢迎指正,补充! /** * 判断变量是否为空, * @param {[type]} param 变量 * @return {Boolean} 为空返回true,否则返回fal ...

  3. ZOJ 2619: Generator

    类型:概率 + 解方程组(高斯消元法) + KMP(好吧其实我用的是暴力~)题意:你可以等概率的选择大写字母里的前n个字母,在纸上写啊写,一直到出现给定的字符串.问写的字母个数的期望.思路: 期望递推 ...

  4. GNOME 3.x下安装配置小企鹅输入法框架及SunPinYin插件

    fcitx 小企鹅输入法框架已经越来越成熟,并且具备极高的性能,配合 Sun PinYin 智能输入法就和 Windows 下的搜狗百度等输入法几乎无二了.事实上,现在Linux版本的搜狗输入法正是基 ...

  5. 洛谷——P1144 最短路计数

    P1144 最短路计数 题目描述 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. 输入输出格式 输入格式: 输入第一行包含2个正整数N,M,为图的顶 ...

  6. linux下kill某个应用

    linux命令行与桌面切换快捷键Ctr+Alt+F1,Ctr+Alt+F7 ps -e | grep abc sudo kill xyz

  7. 优雅的使用ImageGetter

      https://daihanglin.github.io/2017/10/13/imageGetter/ 1. 使用ImageGetter的场景 Android中用于显示文本的控件为textVie ...

  8. JVM--------3

    一.为什么要使用类加载器?Java语言里,类加载都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会给java应用程序提供高度的灵活性.例如:1.编写一个面向接口的应用程序, ...

  9. spring aop提供了两种实现方式jdk和cglib

    Spring AOP使用了两种代理机制:一种是基于JDK的动态代理:另一种是基于CGLib的动态代理.之所以需要两种代理机制,很大程度上是因为JDK本身只提供接口的代理,而不支持类的代理. Sprin ...

  10. 创建Oracle数据库、数据库名与实例名与SID之间的关系(图文详解)

    分类: Oracle(9) 版权声明:转载请注明出处 JmilkFan_范桂飓:http://blog.csdn.net/jmilk 目录(?)[+] 目录 目录 软件环境 前言 安装Oracle监听 ...