原创作品,转载请标明:http://www.jb51.cc/article/p-omofkpnm-ep.html
cocos2d-x到底是怎样实现跨平台的呢?这里以Win32和Android为例。
1.跨平台项目目录结构
先看一下一个项目创建后的目录结构吧!这还是以HelloCpp为例。
从左边目录可以看到,Classes和Resource已经平台无关了,而Classes中包含了AppDelegate类,因此我们可以认为AppDelegate是与平台最接近的类,在它以上就要区分平台了。
2.Win32下的实现
在前一篇就介绍了Win32怎么开始cocos2dx,Win32平台下main.cpp就是程序入口:
- intAPIENTRY_tWinMain(HINSTANCEhInstance,
- HINSTANCEhPrevInstance,
- LPTSTRlpCmdLine,87); font-weight:bold; background-color:inherit">intnCmdShow)
- {
- UNREFERENCED_PARAMETER(hPrevInstance);
- UNREFERENCED_PARAMETER(lpCmdLine);
- //createtheapplicationinstance
- AppDelegateapp;//创建应用实例
- CCEGLView*eglView=CCEGLView::sharedOpenGLView();
- eglView->setViewName("HelloCpp");
- eglView->setFrameSize(2048,1536);
- eglView->setFrameZoomFactor(0.4f);
- returnCCApplication::sharedApplication()->run();//运行程序
- }
3.Android下的实现
3.1.cocos2d-x程序入口
我们先看一下Android下cocos2d-x程序入口点在哪,我们知道Android是采用Java编写的,而cocos2d-x是c++编写的,所以如果要在Java中调用c++代码,那就需要采用JNI技术,看起来好像高端大气上档次,其实程序就是函数调用,也就是输入→处理→输出,所以JNI实际上简单抽象出来就这么回事: