获取cocos2dx3.3资源文件下的文件名, 异步加载所有资源
2015-05-26 16:36
597 查看
异步加载纹理参考:<a target=_blank href="http://cn.cocos2d-x.org/tutorial/show?id=2450">http://cn.cocos2d-x.org/tutorial/show?id=2450</a>
void Loading::loadTextureCache(){//getResName;std::vector<std::string>saveFiles;
<span style="white-space:pre"> </span>//获取路径std::vector<std::string> searchPathArray = FileUtils::getInstance()->getSearchPaths();std::string resName = "res";std::string imgPath = "general/img";std::string findPath;
//找出 resName 的路径名for (auto it : searchPathArray){if (it.find(resName) != std::string::npos){findPath = it + imgPath; // ../res/general/imgbreak;}}getFiles(findPath, saveFiles);//only support .jpg .png 只支持png和jpg格式for (auto itor = saveFiles.begin(); itor != saveFiles.end();){auto l = *itor;if (l.find(".png") != std::string::npos || l.find(".jpg") != std::string::npos){++itor;}else{itor = saveFiles.erase(itor);}}//load 异步加载所有<span style="font-family: Arial, Helvetica, sans-serif;">imgPath路径下的所有纹理</span>_numOfTexture = saveFiles.size();for (int i = 0; i < _numOfTexture; i++){size_t len = saveFiles[i].find(imgPath);std::string outPath = saveFiles[i].substr(len);//CCLOG("-------------- > %s", outPath.c_str());Director::getInstance()->getTextureCache()->addImageAsync(outPath, CC_CALLBACK_1(Loading::loadTextureCacheCallback, this));}}
//异步回调void Loading::loadTextureCacheCallback(Texture2D *texture){CCLOG("%d/%d", ++_loadedOfTexture, _numOfTexture);if (_loadedOfTexture == _numOfTexture){
<span style="white-space:pre"> </span>//测试 initAllScenes() 耗时int time = clock();if (initAllScenes()){CCLOG("==============initAllScenes===================> useTime = %d", clock() - time);}else{//do sth}}}
//get full path 获取path文件下的所有文件名void Loading::getFiles(std::string path, std::vector<std::string>& files){//file handlelong hFile = 0;//file infostruct _finddata_t fileinfo;std::string p;if ((hFile = _findfirst(p.assign(path).append("/*").c_str(), &fileinfo)) != -1){do{//if is dir ,iteration getFiles(...);if ((fileinfo.attrib & _A_SUBDIR)){if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0){getFiles(p.assign(path).append("/").append(fileinfo.name), files);}}else{//if isn't dir, push_back vector.files.push_back(p.assign(path).append("/").append(fileinfo.name));}} while (_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}}
相关文章推荐
- Unity 获取指定资源目录下的所有文件
- Asp.net 获取指定目录下的后缀名为".doc" 的所有文件名和文件路径
- c# .Net 根据资源文件名获取资源文件对象
- iOS http异步请求类,可上传文件,可获取加载百分比
- Cocos2dx之进度条使用,异步加载资源进缓存
- Unity 获取指定资源目录下的所有文件
- VC++获取一个文件夹下所有文件的文件名或者给定类型文件的文件名
- python 关于获取某一目录下的所有文件名并保存至txt文件
- Unity 获取指定资源目录下的所有文件
- php获取指定文件夹下所有文件的文件名
- Java-读取某个目录下所有文件、文件夹和3种从文件路径中获取文件名的方法
- C++获取某路径下所有文件名,ifstream打开某路径下的指定文件
- C#获取文件夹中所有文件的文件名
- cocos2dx异步加载资源制作Loading界面
- 在window下获取文件下的所有文件名
- php 获取当前页面所有require加载文件
- VC-获取文件夹中的指定类型的所有文件名和文件大小
- cocos2dx 3.3 异步加载纹理
- Java获取文件夹下所有文件文件名写入文件中
- 获取指定目录下指定类型所有文件的全路径及文件名