cocos2dx 不同平台上加載文件


原文轉自:http://blog.sina.com.cn/s/blog_62b2318d0101eozt.html

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 加上:<uses-permission android:name="android.permission.INTERNET" />


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM