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" />

你可能感兴趣的:(cocos2dx)