zoukankan      html  css  js  c++  java
  • 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" />

  • 相关阅读:
    第十三周进度条
    寻找水军
    第十二周进度条
    学习总结
    第十五周工作总结
    第十四周工作总结
    《梦断代码》阅读笔记03
    个人工作总结20
    个人工作总结19
    个人工作总结18
  • 原文地址:https://www.cnblogs.com/worldtraveler/p/3269521.html
Copyright © 2011-2022 走看看