初始化文件理解 Cocos2D 如何绘制帧

在写这篇文章之前,xxx已经写过了几篇关于改初始化文件主题的文章,想要了解的朋友可以去翻一下之前的文章

    

    我们道知Cocos2D 是跨平台的 ( Android, iOS, BlackBerry ), 因此它必须把自己适配到不同平台上, 这些适配包含:

    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 中吧   )

    

    

    

    

Java 层适配类

    

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

    

    

    

    1) 下面我们提到Cocos2dxHelper

    2) Cocos2dxGLSurfaceView 派生于  GLSurfaceView, 这样就能够直接用调 opengl的函数图绘, 并在此View 中表现了

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

    

    每日一道理
成功的花朵开放在啊勤劳的枝头,失败的苦果孕育在懒惰的温床之中。

    

Cocos2dxRenderer

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

    2) onDrawFrame 的时候, 就是通知Cocos2d制绘一帧, 具体容内可以考参

     解理 Cocos2D 如何制绘帧

    

    

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

    

    

nativeInit

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

    

    

    

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

    Cocos2d 做了下面的作工

    1) 根据 Android 供给屏幕巨细信息设置 FrameSize

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

    3) 而后 Director, Scene 都被创立,

    4) 最后让 Director 运行想运行的 Scence

    

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

    

    

    

    

文章结束给大家分享下程序员的一些笑话语录: 问:你觉得让你女朋友(或者任何一个女的)从你和李彦宏之间选一个,你觉得她会选谁?  
  答:因为李艳红这种败类,所以我没女友!

posted @ 2013-04-21 21:05  xinyuyuanm  阅读(249)  评论(0编辑  收藏  举报