導航:首頁 > 文件目錄 > cocos2dx讀取文件路徑

cocos2dx讀取文件路徑

發布時間:2023-09-01 17:11:04

A. 【急】cocos2dx為啥無法打開包括文件:「curl/curl.h」!!!

因為你的新工程里沒有把對應的include和lib添加進去。你可以參考一下tests的proporties的設置,主要是C/C++->general的Addtionnal Include Directories和Linker->Input的Addtional Libirary xxxx和你新建的工程的對應項,把curl所在的文件夾添加進去還有curl的.lib文件添加即可。

B. cocos2dx 3.2 android工程打開assets下的plist文件

你修改一下,android的assets下的文件路徑應該是 file:///android_asset/文件名 這種格式

C. cocos2dx lua 代碼中讀取二進制文件用什麼方法

如何在cocos2d c++代碼中調用lua以及探究,有需要的朋友可以參考下。 如何在cocos2d c++代碼中調用lua 在AppDelegate 中加入了 #include"Lua_extensions_CCB.h" #include"CCLuaEngine.h" #include"Lua_web_socket.h" 查到代碼載入lua腳步引擎

D. cocos2dx下完後怎麼運行

一. 啟動終端(點擊Finder-前往-實用工具-終端);
二.將你下載的zip包解壓,mac下直接雙擊,放到某一文件夾下;
三.在終端上進入剛解壓的文件夾,cd 到目錄cocos2d-x-3.2, 然後輸入如下命令運行:./setup.py;
四.輸入 source /Users/HQ(你的用戶名)/.bash_profile 這是用來刷新配置文件的;
五.cocos new MyProject -p com.YouCompany -l cpp -d Project/Games
註: MyProject項目名 可任意命名、com.YouCompany包名 可任意命名、Project/Games 保存文件夾路徑 可任意寫
運行後就創建新項目了,到xcode中打開

E. cocos2dx CCFileUtils 或者CCDictionary如何讀取文件

在cocos2d-x中可以用.plist格式的文件來保存數據,它是XML文件格式的一種,在cocos2d-x解析.plist方面相關的資料比較少,但本身也很簡單,要解析.plist文件可以參考cocos2d-x類庫中的CCSpriteFrameCache類和CCParticleSystem類,它主要是使用CCDictionary類來對.plist文件進行操作。
下面有一個.plist文件:

<?xml version="1.0" encoding="UTF-8"?>

<plist version="1.0">
<dict>
<key>level1</key>
<dict>
<key>bg_far_scene</key>
<dict>
<key>path</key>
<string>images/far_scene.png</string>
<key>pos</key>
<string>{358, 309}</string>
</dict>
<key>bg_near_scene</key>
<dict>
<key>path</key>
<string>images/near_scene.png</string>
<key>pos</key>
<string>{360, 100}</string>
</dict>
</dict>
</dict>
</plist>

讀取.plist文件的代碼如下:

const char* testPlistPath = "BSPlistDatas\\test.plist";
const char* fullPath = CCFileUtils::sharedFileUtils()->fullPathFromRelativeFile("test.plist", testPlistPath);
CCDictionary* plistDic = CCDictionary::createWithContentsOfFile(testPlistPath);

CCDictionary* levelDic = dynamic_cast<CCDictionary*>(plistDic->objectForKey("level1"));
CCDictionary* farScene = dynamic_cast<CCDictionary*>(levelDic->objectForKey("bg_far_scene"));
CCString* farScenePath = dynamic_cast<CCString*>(farScene->objectForKey("path"));
CCPoint point = CCPointFromString(farScene->valueForKey("pos")->getCString());

CCLog("path = %s", farScenePath->getCString());
CCLog("pos = %f, %f", point.x, point.y);

第一行是.plist文件的相對路徑,通過CCFileUtils類獲得文件中絕對路徑後,使用CCDictionary::createWithContensOfFile(filePath);將文件中內容載入到CCDictionary數據結構的內存中,然後通過xxxForKey獲得相應的key下的value。
這里需要注意的是,當在讀取'pos'的時候,它的值一個{x, y}的字元串,這是.plist文件中的數組存儲規則,我們可以通過cocos2d-x提供函數api將這樣的字元串轉化為CCpoint對象。
CCPoint point = CCPointFromString(farScene->valueForKey("pos")->getCString());

上面這句話就是做了這樣的一個轉化的過程,同樣的cocos2d-x還支持CCSize、CCRect的字元串的轉化。他們轉化的方法以及在.plist中對應的字元串格式如下:
CCPoint: CCPointFromString();{x, y}
CCSize: CCSizeFromString();{w, h}
CCRect: CCSizeFromString();{x, y, w, h}
這樣我們2D游戲所初始化所需要的數據都基本上夠用了,可以嘗試將游戲的初始數據放在.plist中,然後修改調整數值就可以直接修改plist文件,而無需重新編譯程序了,從而實現游戲數據和游戲邏輯的分離。

F. cocos2dx怎麼遍歷資源文件夾里的文件

第一步在:在ZipFile添加方法,因為_dataThread是個私有的,盡量不改變源碼的情況下,添加一個get方法是最好的

這個getAllFile可以返回所有的文件目錄

std::vector<std::string>ZipFile::getAllFile(){

std::vector<std::string> vec;

ZipFilePrivate::FileListContainer::iterator it1;

for(it1=_dataThread->fileList.begin();it1!=_dataThread->fileList.end();++it1) {

vec.push_back(it1->first.c_str());

}

return vec;

}

第二步:使用getAllFile的返回值做遍歷,這里直接帖出iOS和Android的同時遍歷吧,同時搜索png和jpg的圖片,可以用於載入資源,記得導入頭文件

#include "support/zip_support/ZipUtils.h"

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

#include <dirent.h>

#include <sys/stat.h>

#else

#include "platform/CCCommon.h"

#include "support/zip_support/unzip.h"

#include "jni/Java_org_cocos2dx_lib_Cocos2dxHelper.h"

#endif

void ResourceLoadingLayer::getAllFile(std::string folderPath,int depth, std::vector<std::string> *list, std::string head){

#if CC_PLATFORM_IOS == CC_TARGET_PLATFORM

DIR *dp;

structdirent *entry;

structstat statbuf;

if((dp =opendir(folderPath.c_str())) ==NULL) {

fprintf(stderr,"cannot open directory: %s\n", folderPath.c_str());

return;

}

chdir(folderPath.c_str());

while((entry =readdir(dp)) != NULL) {

lstat(entry->d_name,&statbuf);

if(S_ISDIR(statbuf.st_mode)) {

if(strcmp(".",entry->d_name) == 0 ||

strcmp("..",entry->d_name) ==0)

continue;

getAllFile(entry->d_name,depth+4,list,head+entry->d_name);

} else {

if (head.length() ==0) {

string name = entry->d_name;

if (name.length()>3 && name.rfind(".") > 0 && (name.substr(name.rfind(".")+1,3) == "jpg" || name.substr(name.rfind(".")+1,3) == "png")) {

list->push_back(entry->d_name);

}

} else {

string filename = head+"/" +entry->d_name;

if (filename.length()>3 && filename.rfind(".") > 0 && (filename.substr(filename.rfind(".")+1,3) == "jpg" || filename.substr(filename.rfind(".")+1,3) == "png")) {

list->push_back(filename);

}

}

}

}

chdir("..");

closedir(dp);

#else

ZipFile* pFile = new ZipFile(getApkPath(),"assets/");

vector<string> vec = pFile->getAllFile();

for (int i=0; i<vec.size(); i++) {

string file = vec.at(i);

if (file.compare("assets/")) {

file = file.substr(7,file.length());

}

if(file.substr(0,folderPath.length()) == folderPath ){

string filename = file.substr(file.rfind("/")+1,file.length());

if (filename.length()>3 && filename.rfind(".") >0 && (filename.substr(filename.rfind(".")+1,3) =="jpg" || filename.substr(filename.rfind(".")+1,3) =="png") {

list->push_back(filename);

}

}

}

#endif

}

第三步,使用:

首先得拿到資源文件夾的完整路徑,方法有很多,只舉其一:

在HelloWorld的工程下的資源根目錄有一張HelloWorld.png圖片,我們可以直接獲取它在程序中的完整路徑,即

string fullpath = CCFileUtils::sharedFileUtils()->fullPathForFilename("HelloWorld.png");

所以 string resPath = fullpath.substr(0,fullpath.rfind("/")+1);

得到了完整的資源路徑後,

vector<string> vec;

getAllFile(resPath, 0, &vec, "");

這樣就大功告成了,vec會保存所有的png或jpg的資源,會帶head名的哦,比如說bg/welcome.jpg

上面是遍歷所有的文件夾,如果單獨遍歷資源文件下的某個目錄,即是

getAllFile(resPath+"xxx",0,&vec,""); xxx 為資源根目錄下的子目錄,這樣就可以分別載入某個目錄了

閱讀全文

與cocos2dx讀取文件路徑相關的資料

熱點內容
在剪映app中怎麼查看視頻尺寸 瀏覽:9
linux文件成分包括 瀏覽:886
文件轉換免費的軟體 瀏覽:644
linuxwpsxlsx 瀏覽:482
小米手機怎麼上移動網路連接失敗怎麼辦 瀏覽:598
win10系統打開java 瀏覽:479
全日制編程什麼意思 瀏覽:447
筆記本創建區域網怎麼傳文件 瀏覽:871
怎樣查看id密碼 瀏覽:647
贛州極客晨星少兒編程怎麼樣 瀏覽:690
覺醒年代哪個app可以免費觀看 瀏覽:830
如何關閉win10觸摸屏幕 瀏覽:761
蘋果142不能傳文件 瀏覽:128
如何看歷史底部數據 瀏覽:230
怎麼在電腦上下軟體或安裝app 瀏覽:798
qq頭像電影截圖情侶 瀏覽:87
安卓的網路位置設置在哪 瀏覽:973
編程俠官網如何登錄 瀏覽:484
借貸王app怎麼樣 瀏覽:552
qq黑鑽手機怎麼開通 瀏覽:465

友情鏈接