cocos2dx在不同平台上讀取資源檔案時的處理方式是不同的。
在ios下,程式呼叫ccsprite::create("helloworld.png"),函式最終會到mainbundle下查詢檔案。
而在android下,函式會查詢apk檔案,然後從apk中讀取資源檔案。
差異的原因是ios下資源是放在程式bundle目錄下的,而android的apk檔案是zip包,資源都
被壓縮了,所以要從zip中抽取檔案。
結合實際,如果專案中要自己讀取某檔案,比如資料庫檔案test.db,在ios下把其放在resource下就行了;
而在android下要直接呼叫ccfileutils::sharedfileutils()->getfiledata函式,函式返回值是檔案內容指標,
操作完畢記得要將指標delete。
跨平台不是一件容易事啊~~
1. 資源讀取
ios的ipa的資源打包結構和實際結構是一致的,比如,在resource目錄下有乙個client.cfg文字檔案,我們是直接用fread或者ofstream讀取出來的,處理的。
android的資源,打包的時候會全部拷貝到assets目下,壓縮了一下,分兩種情況:
ccsprite::create()之類的,可以讀取出來;
自己的配置檔案,xml之類的,不能直接讀,必錯。
cocos2dx支援統一的方法: ccfileutils::fullpathforfilename(), 獲取正確路徑; ccfileutils::getfiledata(),解壓,將檔案讀出到記憶體,程式直接處理這個返回值。
2. android ndk, 也定義了__linux__巨集,其他**用到這個巨集的小心,不要在android前面,把android的一些預定義給覆蓋了。
3. android涉及到的網路的, 在androidmanifest.xml 加上:
cocos2d x獲取平台型別
targetplatform target gettargetplatform 獲取當前裝置型別 裝置列舉變數如下 ktargetwindows window系統 ktargetlinux linux系統 ktargetmacos mac os系統 ktargetandroid android系統 ...
Cocos2d x 跨平台特性分析
作為一款跨平台的 2d 遊戲引擎 cocos2d x 方便發布到各種移動平台,支援也在不斷完善。可以跨平台執行,更據優勢的是可以跨平台開發!作為執行平台來說,目前主要以 ios和 android 平台為多,對其它平台也有支援,如 blackberry 平台,但基本只要滿足前兩者,就能達到我們跨平台執...
cocos2dx 在android平台開啟檔案問題
在網上查到資料能夠通過呼叫cocos2dx裡的getfiledata 這個函式來讀取檔案內容,getfiledata通過檢測不同的平台。呼叫不同的介面的來開啟和讀取檔案,在ios和windows上依舊沒問題,可在android上呼叫讀取檔案時還是打不開檔案。試了非常多方法都不能夠。找公司還有一同事來...