您的位置:首页 > 移动开发 > Cocos引擎

获取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);}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cocos2dx 异步