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打开一个文件读取数据
本文介绍了Cocos2d-x中如何利用CCFileUtils进行文件查找,包括绝对路径和相对路径的处理。内容涉及文件存在性判断、在pak文件中的查找以及搜索路径的添加。此外,还讲解了从pak文件中读取数据的方法,如利用getFileDataFromPak和getFileData函数。

509

被折叠的 条评论
为什么被折叠?



