cocos2dx 文件处理
问题1:fopen
在vs下使用fopen进行文件处理,跑通了,但是移植到android源码下时就出现了一大推问题,首先需要理解的是在vs下开发资源是存放在执行文件的相同目录下的,而移植到android下时资源是存放在assets目录下的,之前尝试过使用以下的方法:
- char* fileName = "bg.png";
- string filepath = CCFileUtils::sharedFileUtils()->fullPathForFilename(fileName);
- FILE *fp = fopen(filepath.c_str(), "r");
结果还是报错,一进游戏就挂了,估计是跟底层有关,没有深究,解决方法是使用cocos2dx的CCFileUtils
- char* filename = "bg.png";
- //获得文件在系统的绝对路径--assets/bg.png
- string filepath = CCFileUtils::sharedFileUtils()->fullPathForFilename(filename);
- //读取的字节数,读取失败则为0
- unsigned long len = 0;
- //读取的内容
- unsigned char *data =CCFileUtils::sharedFileUtils()->getFileData(filepath.c_str(), "rb", &len);
- /*
- 此处进行你对文件的操作
- */
- //最后记得释放内存
- if(len >0 && data) delete[] data;
- /***********************接口说明*****************************
- static unsigned char* getFileData ( const char * pszFileName,
- const char * pszMode,
- unsigned long * pSize
- )
- pszMode:
- r 以只读方式打开文件,该文件必须存在。
- r+ 以可读写方式打开文件,该文件必须存在。
- rb+ 读写打开一个二进制文件,允许读数据。
- rt+ 读写打开一个文本文件,允许读和写。
- w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
- w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
- a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
- a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
- wb 只写打开或新建一个二进制文件;只允许写数据。
- wb+ 读写打开或建立一个二进制文件,允许读和写。
- wt+ 读写打开或着建立一个文本文件;允许读写。
- at+ 读写打开一个文本文件,允许读或在文本末追加数据。
- ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
- */
问题2:tinyxml
使用tinyxml来读xml文件,之前我的做法是:
- //根据xml数据创建动画
- string xmlFile_path = "bg.xml";
- //读取动作XML文件
- tinyxml2::XMLDocument* doc=new tinyxml2::XMLDocument();
- doc->LoadFile(xmlFile_path.c_str());
- tinyxml2::XMLElement *ani_node=doc->RootElement();
- tinyxml2::XMLElement *action_node=ani_node->FirstChildElement("action");
在vs下是跑通了,但移植到android下就崩溃了,后来在网上看到一些解决方法:连接http://blog.sina.com.cn/s/blog_6e5f7d400100zlj7.html
先把xml文件读取到一个buff,然后让tinyxml来解析这个buff,让tinyxml绕过了读取文件失败的bug
- //根据xml数据创建动画
- string xmlFile_path = "bg.xml";
- //获得文件在系统的绝对路径
- string xmlfilepath = CCFileUtils::sharedFileUtils()->fullPathForFilename(xmlFile_path.c_str());
- //读取的字节数,读取失败则为0
- unsigned long len = 0;
- //读取的内容
- unsigned char *data =CCFileUtils::sharedFileUtils()->getFileData(xmlfilepath.c_str(), "r", &len);
- //读取动作XML文件
- tinyxml2::XMLDocument* doc=new tinyxml2::XMLDocument();
- doc->Parse((char*)data, len);
- tinyxml2::XMLElement *ani_node=doc->RootElement();
- tinyxml2::XMLElement *action_node=ani_node->FirstChildElement("action");
cocos2dx 文件处理由源码搜藏网整理,转载请注明出处http://www.codesocang.com/jiaocheng/shoujikaifa/10121.html
cocos2dx 文件处理的更多相关文章
- Cocos2d-x 3.0新引擎文件夹结构
Cocos2d-x 3.0新引擎文件夹结构 2014年4月29日 Cocos2d-x 3.0学习 作为一个Cocos2d-x的菜鸟,我倒是挺愿意关注不同版本号之间的差别,Cocos2d-x 3.0自 ...
- 一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)
cocos2d-x 3.0发布有一段时间了,作为一个初学者,我一直觉得cocos2d-x很坑.每个比较大的版本变动,都会有不一样的项目创建方式,每次的跨度都挺大…… 但是凭心而论,3.0RC版本开始 ...
- VS2010下安装Cocos2dx完整教程(原)
一.本人所使用的Cocos2dx版本(cocos2d-2.1rc0-x-2.1.3),下载地址:http://code.google.com/p/cocos2d-x/downloads/list 当前 ...
- 初入Cocos2d-x 2.2
下载2.2,用迅雷离线下载很快搞定. 解压后,打开cocos2d-win32.vc2012.sln,编译,超慢,20分钟才完事. 然后想创建一个新项目,需要用到python,用python3.3运行脚 ...
- Cocos2d-x游戏移植到Android平台
1.所需环境支持:Android SDK.NDK.Eclipse.Cygwin.(本人所用系统WIN7-64位) (1)Cygwin的下载安装: Cygwin是Windows下的Linux模拟环境,用 ...
- Mac下安装cocos2d-x环境
安装后xcode之后,下载cocos2dx压缩包,解压 通过中断cd到cocos2dx文件夹内 输入下行命令 sudo ./install-templates-xcode.sh 执行成功后打开xcod ...
- cocos2dx系列笔记(2)- windows环境配置后续之 Android环境配置
续上篇 对于想用cocos2dx来开发Android游戏的人来说,最痛苦的莫过于配置Android环境和之后的奇奇怪怪的编译失败问题.这是经历了多次成功与失败之后,血与泪的经验包,大家请收好.如果你有 ...
- cocos2dx系列笔记(1)- windows环境配置前篇
cocos2dx升级之旅,请多指教~ 本篇是本人搭建cocos2dx-Windows 64位环境的配置说明,仅供参考. 开发准备 搭建环境肯定需要准备好所有工具,只有把工具都准备好了,才能撸起袖子干活 ...
- win7 vs2010 安装cocos2d-x
http://blog.csdn.net/leoncoder/article/details/12523727 新安装搭建cocos2d-X的跳过这里,看以下红色開始: cocos2d-x删除vs20 ...
随机推荐
- 【整理】各种Python的IDE(集成开发环境)的总结和对比
原地址:http://www.tuicool.com/articles/rMVJNn 原文 http://www.crifan.com/summary_common_python_ide_pyscr ...
- 因为中国队赢了,再撸一下DJANGO的官方文档吧
对比一下,CBVS和FBVS,哪个方便? from django.shortcuts import render from django.http import Http404 from django ...
- Android 连接tomcat模拟登陆账号
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...
- 【网络流24题】No.7 试题库问题 (最大流,二分图多重匹配)
[题意] 假设一个试题库中有 n 道试题. 每道试题都标明了所属类别. 同一道题可能有多个类别属性.现要从题库中抽取 m 道题组成试卷.并要求试卷包含指定类型的试题. 试设计一个满足要求的组卷算法. ...
- Multi-bit per cell storage
Memories Scaling 其他的的半导体存储器的制程一般2年为一个升级周期,但是nand flash 存储器的制程升级周期和他们比起来只有1年.这种更快的制程升级导致SLC NAND ...
- struts2文件异步上传
代码结构 用到的js文件: 用到的jar包: jar和js库文件下载地址:下载地址 首先我们写FileAction类 package com.ajaxfile.action; import java. ...
- Electrification Plan(最小生成树)
http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=50#problem/D 最小生成树模板,注意的是这里有k个发电站,它们不再需要连 ...
- BZOJ_1208_&_Codevs_1258_[HNOI2004]_宠物收养所_(平衡树/set)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1208 (据说codevs要更新?就不放codevs的地址了吧...) 有宠物和人,每个单位都有 ...
- HDOJ/HDU 2087 剪花布条(indexOf()应用~~)
Problem Description 一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input 输入 ...
- 城市连动纯js代码DEMO
前台代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" co ...