简要学习下quick cocos2d x 在安卓端启动的过程。
首先需要了解一点:quick cocos2d x是依托于Android的activity和GLSurfaceView(继承自SurfaceView)的环境来显示quick层的游戏界面。
(1)首先quick类的android游戏从AndroidManifest.xml文件指定的activity(假设AC)启动。
(2)AC继承父类的Cocos2dxActivity。
(3)调用静态初始化块,加载cocos2dx的动态库、也就是一些C++的方法。因为后面会通过Java调用native的C++方法,运行Cocos2dx。
(4)启动程序,执行AC的onCreate()函数,调用super.onCreate()函数(也就是Cocos2dxActivity的onCreate()函数)
(5)进入父类的onCreate函数后,一个重要的组件被初始化了。那就是mGLSurfaceView。注意父类的声明周期函数接口。
如:
在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方法干了些什么:
注意上面的AppDelegate类,那里初始化了AppDelegate。
AppDelegate代码主要是设置脚本引擎,导演CCDirector的参数设置,游戏前后台切换时的处理。
通过脚本引擎的设置,就可以在游戏中执行Lua脚本。通过Lua脚本来运行游戏。
Lua通过tolua++,可以调用C++的代码,也就是Cocos2dx的代码,使用游戏引擎Cocos2dx了。
至此游戏运行!
至于AppDelegate,需要另外开一篇Blog了