Cocos2d-x3.1FileUtilsTest使用

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

转载于:https://www.cnblogs.com/blfbuaa/p/6792070.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

古巴平台上的通用过滤器–类固醇上的excel过滤器

正如我上次承诺的那样&#xff0c;我计划浏览该平台的某些功能&#xff0c;这些功能我认为非常有价值。 所以我将在这里做一些系列。 从明显的用户界面&#xff0c;过滤&#xff0c;安全性到一些高级功能&#xff08;如Web Portal&#xff0c;可扩展性&#xff0c;审核&#xf…

python关键字详解_Python 中的关键字with详解

在 Python 2.5 中&#xff0c;with关键字被加入。它将常用的 try ... except ... finally ...模式很方便的被复用。看一个最经典的例子&#xff1a; with open(file.txt) as f: content f.read() 在这段代码中&#xff0c;无论with中的代码块在执行的过程中发生任何情况&#…

python interactive window_如果PySide应用程序是从IPython interactive cons运行的,上下文菜单就会消失...

在下面给出的最小示例中&#xff0c;上下文菜单(右键单击gui的白色部分)仅短暂显示&#xff0c;然后消失。如果应用程序是从IPython(0.13.1)控制台启动的&#xff0c;则会出现这种情况。当从shell正常启动时&#xff0c;它可以正常工作。在import sysfrom PySide import QtGui,…

基准测试:Java 8 Lambda和流如何使您的代码慢5倍

与长期的实现相比&#xff0c;Java 8 lambda和流的性能如何&#xff1f; Lambda表达式和流在Java 8中受到了热烈的欢迎。这些是迄今为止很激动人心的功能&#xff0c;很长一段时间以来&#xff0c;它们就已经应用到Java中了。 新的语言功能使我们可以在代码中采用更具功能性的…

ssm框架逻辑删除mysql_MybatisPlus--CRUD接口及主键增长策略、自动填充、乐观锁更新数据...

目录一、insert1、插入操作2、主键策略二、update1、根据Id更新操作2、自动填充3、乐观锁三、select1、根据id查询记录2、通过多个id批量查询3、简单的条件查询4、分页四、delete1、根据id删除记录2、批量删除3、简单的条件查询删除4、逻辑删除一、insert1、插入操作RunWith(Sp…

python对英语的要求_学python需要英语基础吗

在很多人的眼里&#xff0c;学习编程需要英语基础&#xff0c;因为程序代码全是英文字母&#xff0c;如果没有英语基础可能很难学懂编程。程序代码是英文确实没有错&#xff0c;但是也不是必须得懂英语&#xff0c;因为计算机程序有自己语言&#xff0c;并不是我们生活中的英语…

mysql5.6 优点_MySQL5.6复制:GTID的优点和限制(第一部分)_MySQL

bitsCN.com全局事务标示符(Global Transactions Identifier)是MySQL 5.6复制的一个新特性。它为维护特定的复制拓扑结构下服务器的DBA们大幅度改善他们的工作状况提供了多种可能性。然而&#xff0c;你还应该明白当前实现的一些局限。本博文是专门对在生产环境中启用GTID到底意…

python找不到csv文件_Python如何读取csv文件

逗号分隔值&#xff08;Comma-Separated Values&#xff0c;CSV&#xff0c;有时也称为字符分隔值&#xff0c;因为分隔字符也可以不是逗号&#xff09;&#xff0c;其文件以纯文本形式存储表格数据&#xff08;数字和文本&#xff09;。纯文本意味着该文件是一个字符序列&…

jsf 自定义属性_必填字段的自定义JSF验证器

jsf 自定义属性实现EditableValueHolder接口的JSF组件具有两个属性“ required”和“ requiredMessage” –一个标志&#xff0c;指示用户需要输入/选择非空值&#xff0c;以及一个用于验证消息的文本。 我们可以使用它&#xff0c;但是它不够灵活&#xff0c;我们不能直接在视…

Python那些事

Python这几年很火&#xff0c;在这里我用问答的方式来总结一下使用python的一些常见问题&#xff0c;对自己是个总结&#xff0c;也希望对有同样问题的朋友有帮助。Q&#xff1a;Python为什么流行&#xff1f;A&#xff1a;Python是一个比较方便的跨平台脚本语言。对于像我这种…

python cv2模块imshow_Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()

一、需要工具本机使用python 2.7.10下调试代码均通过&#xff0c;一下学习需要有一定的代码阅读能力&#xff0c;一下学习只介绍函数方法&#xff1a;Python 作为一种高效简洁的直译式语言非常适合我们用来解决日常工作的问题。而且它简单易学&#xff0c;初学者几个小时就可以…

python程序设计课程设计_《Python程序设计》教学大纲.doc

PAGE 理论课程教学大纲 《Python程序设计》教学大纲 课程编号&#xff1a; 总 学 时&#xff1a;64&#xff08;其中&#xff0c;讲课&#xff1a;32&#xff1b;实验&#xff1a;32&#xff09; 学 分&#xff1a;3 实践教学&#xff1a;0周 修读专业&#xff1a;地理信息系统…

2016年将是Java终于拥有窗口函数的那一年!

你没听错。 到目前为止&#xff0c;出色的窗口功能是SQL独有的功能。 即使是复杂的函数式编程语言似乎也缺少这种漂亮的功能&#xff08;如果我记错了&#xff0c;请纠正我&#xff0c;Haskell伙计们&#xff09;。 我们撰写了许多有关窗口函数的博客文章&#xff0c;并在诸如…

LINQ to Entities 不识别方法“System.String ToString() 的解决方法

今天在做一个页面的时候出现了LINQ to Entities 不识别方法“System.String ToString()”的错误&#xff0c;对于源码IQueryable<SelectListItem> items roleInfoServer.Get(r > true).Select(r > new SelectListItem() { Value r.Id.ToString(), Text r.RoleNa…

android 仿京东地址选择_Android 开发:仿美团地址选择

最近做了这个功能&#xff0c;分享一下&#xff0c;用的是百度地图api&#xff0c;和美团外卖的地址选择界面差不多&#xff0c;也就是可以搜索或者滑动地图展示地址列表给用户选择&#xff0c;看下效果图先。文章重点展示地图并定位到“我”的位置 滑动地图获取周边poi(逆地理…

简单回顾在杭州7年

回顾2010年回到浙江杭州&#xff0c;从一开始做.net到后来转到As3网页游戏开发&#xff0c;后又搞起android&#xff0c;那时候就立志想做一款有关于bible的游戏&#xff0c;2010年进入一家创业公司&#xff0c;叫追梦&#xff0c;是追求梦想的开始&#xff0c;在那接触火山和A…

ps还原上一步快捷键_ps还原上一步快捷键_photoshop恢复上一步操作的快捷键是什么...

满意答案simonsinxer推荐于 2017.09.01采纳率&#xff1a;53% 等级&#xff1a;11已帮助&#xff1a;63469人还原/重做前一步操作 【Ctrl】【Z】其他一些快捷键&#xff1a;还原两步以上操作 【Ctrl】【Alt】【Z】重做两步以上操作 【Ctrl】【Shift】【Z】剪切选取的图像或路…

python中排序从小到大_从Python看排序:冒泡排序

冒泡排序在排序算法中是最简单的一种&#xff0c;它通过多次遍历列表&#xff0c;将最大的元素冒泡到列表的头部或尾部。我们通过对四张扑克牌&#xff08;花色相同&#xff09;以从小到大的方式进行排序来演示该算法的工作原理。首先将扑克牌面朝上放在桌上&#xff0c;如下图…

Shell else if mysql_Shell if else语句(详解版)

和其它编程语言类似&#xff0c;Shell 也支持选择结构&#xff0c;并且有两种形式&#xff0c;分别是 if else 语句和 case in 语句。本节我们先介绍 if else 语句&#xff0c;case in 语句将会在《Shell case in》中介绍。如果你已经熟悉了C语言、Java、JavaScript 等其它编程…

【Java并发编程】:使用synchronized获取互斥锁

在并发编程中&#xff0c;多线程同时并发访问的资源叫做临界资源&#xff0c;当多个线程同时访问对象并要求操作相同资源时&#xff0c;分割了原子操作就有可能出现数据的不一致或数据不完整的情况&#xff0c;为避免这种情况的发生&#xff0c;我们会采取同步机制&#xff0c;…