quick cocos2d x 手机(Android端)启动过程学习

简要学习下quick cocos2d x 在安卓端启动的过程。
首先需要了解一点:quick cocos2d x是依托于Android的activity和GLSurfaceView(继承自SurfaceView)的环境来显示quick层的游戏界面。

(1)首先quick类的android游戏从AndroidManifest.xml文件指定的activity(假设AC)启动。

quick cocos2d x 手机(Android端)启动过程学习

(2)AC继承父类的Cocos2dxActivity。

(3)调用静态初始化块,加载cocos2dx的动态库、也就是一些C++的方法。因为后面会通过Java调用native的C++方法,运行Cocos2dx。

(4)启动程序,执行AC的onCreate()函数,调用super.onCreate()函数(也就是Cocos2dxActivity的onCreate()函数)

(5)进入父类的onCreate函数后,一个重要的组件被初始化了。那就是mGLSurfaceView。注意父类的声明周期函数接口。

如:

quick cocos2d x 手机(Android端)启动过程学习

在Activity的onResume() 和onPause()接口,主要是针对mGLSurfaceView的绘制控制。

这样在游戏进入后台时,调用activity的生命周期函数,暂停游戏绘制等等相关处理。

(6)mGLSurfaceView设置Render渲染。

执行this.mGLSurfaceView.setCocos2dxRenderer(new Cocos2dxRenderer());来设置渲染render。

在Cocos2dxRenderer里面,调用如下代码:

@Override
public void onSurfaceCreated(final GL10 pGL10, final EGLConfig pEGLConfig) {
  Cocos2dxRenderer.nativeInit(this.mScreenWidth, this.mScreenHeight);
  this.mLastTickInNanoSeconds = System.nanoTime();
  isReady = true;
}

上面红色标注的代码将会C++方法,进入cocos2dx的入口,至此游戏即将启动。

请看下面的nativeInit方法干了些什么:

quick cocos2d x 手机(Android端)启动过程学习

 

注意上面的AppDelegate类,那里初始化了AppDelegate。
AppDelegate代码主要是设置脚本引擎,导演CCDirector的参数设置,游戏前后台切换时的处理。
通过脚本引擎的设置,就可以在游戏中执行Lua脚本。通过Lua脚本来运行游戏。
Lua通过tolua++,可以调用C++的代码,也就是Cocos2dx的代码,使用游戏引擎Cocos2dx了。
至此游戏运行!
至于AppDelegate,需要另外开一篇Blog了

quick cocos2d x 手机(Android端)启动过程学习,布布扣,bubuko.com

quick cocos2d x 手机(Android端)启动过程学习

上一篇:移动web笔记


下一篇:(转)apple-touch-icon-precomposed 和 apple-touch-icon属性区别