cocos2dx 不同平台上加载文件
2013-08-20 09:51
253 查看
原文转自: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在不同平台上读取资源文件时的处理方式是不同的。
在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 不同平台上加载文件
- cocos2dx 加载cocostudio创建的exportjson文件 不同图片之间会有黑线问题解决方法
- cocos2dx中.json和.plist以及.xml文件格式生成加载的不同
- Zen cart 为单独的页面加载不同 stylesheet css 文件
- Android 根据不同的屏幕,加载不同的布局文件 使用refs.xml
- cocos2dx lua文件的加载问题
- Intel平台下Linux中ELF文件动态链接的加载、解析及实例分析
- 根据不同的操作系统(64/32),设置文件以64位运行。又可解决问题:“试图加载不正确的程序”。
- 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- Intel平台下Linux中ELF文件动态链接的加载、解析及实例分析(一): 加载
- JAVA_OPTS 配置开发环境、生产环境等不同环境加载配置文件
- SAS 不同平台文件读写
- 关于log4j2的重新加载,以及不同级别日志输出到不同日志文件
- 不同系统平台之间(Linux与Linux、Linux与Unix)利用NFS实现文件共享方法
- Intel平台下Linux中 ELF文件动态链接的加载、解析及实例分析(一): 加载
- 利用Loader来动态加载不同的QML文件来改变UI
- 根据客户端浏览器,加载不同的CSS文件
- Spring MVC 根据不同环境加载不同的配置文件
- 加载不同位置的配置文件的两种方式