目录
- 入口类main.cpp
- 主要控制类AppDelegate.cpp
- 节点类CCNode
- 导演类CCDirector
- 场景类CCScene
- 层次类CCLayer
- 精灵类CCSprite
- 大小类CCSize
- 坐标CCPoint
- 矩形类CCRect
- 数组类CCArray
- 入口类main.cpp
这是应用程序的入口类,用于创建cocos2dx的AppDelegate实例、窗口大小、以及运行程序。
主要代码如下:
// create the application instance AppDelegate app; //创建一个主控制类AppDelegate CCEGLView* eglView = CCEGLView::sharedOpenGLView(); //使用OpenGL进行图形渲染 eglView->setViewName("hello"); //程序窗口标题 eglView->setFrameSize(480, 320); //程序窗口分辨率大小 return CCApplication::sharedApplication()->run();
- 主要控制类AppDelegate.cpp
这是游戏程序的入口,主要用于游戏程序的逻辑初始化,并创建运行程序的入口界面(即第一个游戏界面场景)。
里面有三个方法:
applicationDidFinishLaunching(); //逻辑初始化 applicationDidEnterBackground(); //切换到后台 applicationWillEnterForeground(); //切换到前台
源码分析:
bool AppDelegate::applicationDidFinishLaunching() { //逻辑初始化 //初始化一个导演, 只能有一个导演 CCDirector* pDirector = CCDirector::sharedDirector(); //使用OpenGLView pDirector->setOpenGLView(CCEGLView::sharedOpenGLView()); //屏幕适配,设置游戏设计的分辨率 CCEGLView::sharedOpenGLView()->setDesignResolutionSize(480,320,kResolutionShowAll); //开启状态显示, 帧数,精灵数等 pDirector->setDisplayStats(false); //刷新频率,每秒60帧。 pDirector->setAnimationInterval(1.0 / 60); //创建一个场景Hello,这是游戏程序的第一个界面 CCScene *pScene = Hello::scene(); //运行 pDirector->runWithScene(pScene); return true; } // 切换到后台 void AppDelegate::applicationDidEnterBackground() { //暂停游戏 CCDirector::sharedDirector()->stopAnimation(); // 暂停音乐 SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); } // 切换到前台 void AppDelegate::applicationWillEnterForeground() { //游戏恢复 CCDirector::sharedDirector()->startAnimation(); //音乐恢复 SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); }
讲到这里,大家可能会感到疑惑。为什么会设置了两次分辨率大小呢?
eglView->setFrameSize(480, 320);
CCEGLView::sharedOpenGLView()->setDesignResolutionSize(480,320,kResolutionShowAll);
朋友们,这两个的意义是不一样滴。
setDesignResolutionSize 是设置了我们游戏设计时候的分辨率,即想要适配的宽480高320的屏幕比例。也就是说设计者初衷的游戏分辨率屏幕大小。但是对于每个用户来说,他们使用的设备不一定是(480,320)的,比如手机有大有小。而后面的 kResolutionShowAll 参数意思是按照原比例(480/320)进行放缩以适配设备的实际屏幕。
eglView->setFrameSize(480, 320) 则是设置我们预想设备的屏幕大小,也就是应用程序窗口的大小。
以下贴了几张对比图,加深理解。
1、这是原图片大小,窗口大小为480 * 320。
2、若设置窗口大小为setFrameSize(960, 640),而不设置设计分辨率放缩比例kResolutionShowAll 的情况下,图片不放缩,原图还是480 * 320。
3、设置了 kResolutionShowAll 之后,图片放缩到适配整个屏幕960 * 640 了。
- 节点类CCNode
- 导演类CCDirector
- 场景类CCScene
- 层次类CCLayer
- 精灵类CCSprite
- 大小类CCSize
- 坐标CCPoint
- 矩形类CCRect
- 数组类CCArray
cocos2dx基础篇(5)——浅析几个常见类
时间: 2024-12-19 09:17:44