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

  • 相关阅读:
    ureport2 学习
    odoo 对接ureport2
    云服务器挂载新的硬盘
    linux ubuntu搭建文件共享服务nfs
    大厂MongoDB面试题集锦 转发:https://mp.weixin.qq.com/s/ImOgbKY5lSyMzmicu8xbXA
    写Python爬虫遇到的一些坑 转载:https://mp.weixin.qq.com/s/kfxJ7EKFeunGcjvBr0l7ww
    Selenium 爬取淘宝商品 转载:https://mp.weixin.qq.com/s/7aul82HqxszH5jH9pSpZrA
    tst
    Istio
    2021牛客暑期多校训练营7 F-xay loves trees
  • 原文地址:https://www.cnblogs.com/worldtraveler/p/3269521.html
Copyright © 2020-2023  润新知