设为首页 加入收藏

TOP

Cocos2D 如何做 Android 适配
2014-11-24 07:15:06 来源: 作者: 【 】 浏览:0
Tags:Cocos2D 如何 Android 适配

1) 屏幕显示


2) 用户输入


3) 进程主循环


4) 资源文件 (图片,音乐)


Android 的程序是 Apk, Apk 也是一个 Zip 文件. 处理资源文件有下列几步


1) Cocos2dxHelper 初始化时会吧 Java 层的 ApkPath 传递到 native 层


2) native 成的 CCFileUtils 在用 shareFileUtils() 初始化时, 会新建自己的派生类 CCFileUtilsAndroid, 并把 apk 解开到临时目录.


程序运行中要load资源文件的时候, 就到临时目录去找


3) 在程序退出时, 这个临时目录会被删除


补充:( 实际上 shareFileUtils() 就在CCFileUtilsAndroid.cpp中实现, build iOS 版本不会包含它, 而是在CCFileUtilsiOS.cpp 中吧 )





Cocos2dx 提供了几个Java 层的适配类, 它们在 Cocos2dxActivity 的onCreate 被初始化.





1) 上面我们提到Cocos2dxHelper, 可以看它的 init 被调用


2) Cocos2dxGLSurfaceView 派生于 GLSurfaceView, 这样就可以直接调用 opengl的函数绘图, 并在此View 中显示了


3) 主要的逻辑都在Cocos2dxRenderer中完成, 最重要的就是它




1) onSurfaceCreated 的 nativeInit 被调用, Cocos2d 所有重要对象( CCDirector, CCSence, HelloWorld 等) 都是这里初始化的


2) onDrawFrame 的时候, 就是通知Cocos2d绘制一帧, 详细内容可以参考 理解 Cocos2D 如何绘制帧





另外还有输入的处理,也是通过Cocos2dxRenderer 从 Android的java层 传递到了 Cocos2d的 native 层



下面这张图,描述了 Cocos2D 的对象是如何初始化的





onSurfaceCreated 的 nativeInit 被调用, 也就是说: "可以用opengl 绘图了, Cocos2d 你初始化吧"


Cocos2d 做了下面的工作


1) 根据 Android 提供屏幕大小信息设置 FrameSize


2) 新建 AppDelegate, 注意 AppDelegate 是 CCApplication 的派生类, 当AppDelegate 的run 被调用, 它会调用到applicationDidFinishLaunching


3) 在applicationDidFinishLaunching 中, Director, Scene 都被创建,


4) 最后让 Director 运行 Scence


通过以上这些 Cocos2D 就被适配 Android 系统中了。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android通过http协议获得图片 下一篇并发遍历二叉树 Java 实现

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·MySQL 安装及连接-腾 (2025-12-25 06:20:28)
·MySQL的下载、安装、 (2025-12-25 06:20:26)
·MySQL 中文网:探索 (2025-12-25 06:20:23)
·Shell脚本:Linux Sh (2025-12-25 05:50:11)
·VMware虚拟机安装Lin (2025-12-25 05:50:08)