zoukankan      html  css  js  c++  java
  • 初始化文件理解 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 统系中了

        

        

        

        

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

  • 相关阅读:
    kafka环境搭建
    zookeeper环境搭建学习
    linux时间不准
    (转)Mac osx 下安装iTerm2,并使用rz sz上传下载(附homebrew配置)
    安装mariadb数据库
    mydumper 安装使用
    granfa 安装,配置prometheus数据源
    prometheus 普罗米修斯安装
    Docker常用命令
    winform 一个点击事件触发另一个点击事件
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3034469.html
Copyright © 2011-2022 走看看