cocos2dx如何使用CCFileUtils进行文件查找的

来源:互联网 发布:淘宝如何招募分销商 编辑:程序博客网 时间:2024/04/30 22:39

Cocos2dx支持使用绝对路径以及相对路径进行查找文件

CCFileUtils是一个抽象类,它在ios中使用CCFileUtilsIOS作为具体类。

boolCCFileUtilsIOS::isFileExist(conststd::string& strFilePath)函数可以使用绝对路径以及相对路径,绝对路径调用NSFileManager的fileExistsAtPath

判断文件是否存在,相对路径调用NSBundle的pathForResource来判断文件是否存在

boolCCFileUtils::isFileExistInPak(constchar *filePath)函数判断文件是否在pak文件中,游戏一般把图片等资源放在pak文件中,这样起到一个加密的

作用。我们公司游戏就是通过对图片资源以及lua脚本资源进行一个加密打包处理,最终生成的ios app包含的是加密后的pak文件。

voidCCFileUtils::addSearchPath(constchar* path_)函数是用来添加搜索路径的,我们在游戏里面查找文件不需要写一个文件很长的路径名,可以把

某个基本的资源文件夹作为搜索路径加到搜索路径缓存中去,然后再需要用到文件的地方填写去除这个搜索路径子路径,cocos2dx它会帮我们合成一个全

路径,如果是绝对路径就使用NSFileManager的fileExistsAtPath进行查找,如果是相对路径就是用NSBundle的pathForResource进行查找。如果找不到文件,

就会使用isFileExistInPak到pak中查找。

如果查找到了文件,就会返回全路径,如果在pak中查找到文件,则会返回这样的路径:path = "pak://" + filepath,filepath是合成路径即全路径。

不在pak中的文件可以直接通过读写函数把文件加载到内存,而在pak的文件,需要通过如下接口从pak文件中解析出文件:

unsignedchar *CCFileUtils::getFileDataFromPak(constchar *filePath,unsignedlong * pSize)函数从pak中获得数据

unsignedchar*CCFileUtils::getFileData(constchar* pszFileName,constchar* pszMode,unsignedlong * pSize)函数是读取文件数据的,如果路径前

6个个字符是pak://则会调用getFileDataFromPak从pak中获取数据,否则直接使用fopen打开一个文件读取数据





0 0