cocos2dx基础篇(5)——浅析几个常见类

目录

  • 入口类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

cocos2dx基础篇(5)——浅析几个常见类的相关文章

cocos2dx基础篇(4)——浅析cocos2dx引擎目录

通过前面几节的学习,相信大家都已经配置好了VS+cocos2dx2.2.3的环境,并且成功运行了官方的案例HelloWorld. 一.窥探文件目录 要想学好cocos2dx,首先就需要对引擎目录下的各个文件有所了解.接下来,就让我们先来分析一下cocos2dx2.2.3引擎的文件目录吧. 从目录中我们主要了解一下一下几个文件: cocos2dx:cocos2d-x引擎的核心部分,存放了引擎的大部分源文件. CocosDenshion:声音模块相关源文件. Debug.win32:在Windows

cocos2dx基础篇(10)——开关按钮CCControlSwitch

[本节内容] 开关类CCControlSwitch继承于控件类CCControl. 控件类CCControl主要向子类提供了一系列的控件触发事件.当子控件触发相关的事件后,就会执行相关的控件事件回调函数.这与之前讲的CCMenu中的菜单按钮回调是类似的. 控件类CCControl主要有三个子类: (1)开关控件CCControlSwitch (2)滑块控件CCControlSlider (3)按钮控件CCControlButton 本节讲的是其子类其中之一:开关类CCControlSwitch.

cocos2dx基础篇(12)——点九图CCScale9Sprite

[引言] 本来是想学学控件类CCControl的另一个子类按钮控件CCControlButton的.但是发现里面有一个参数牵扯到CCScale9Sprite这个类.看到CCScale9Sprite,很容易联想到精灵类CCSprite.两者又有什么区别呢?因此我就去网上收了一些有关CCScale9Sprite的资料来学习. [参考文献] [1] http://blog.csdn.net/nynyvkhhiiii/article/details/12782249 [2] http://www.cnb

cocos2dx基础篇(7)——菜单按钮CCMenu、CCMenuItem

[本节内容] 菜单按钮在游戏中是经常被用到的,比如主菜单界面的菜单选项,暂停游戏时的菜单选项等等.cocos2dx引擎同样为我们提供了CCMenu菜单的功能,并包含了一些简单的菜单项CCMenuItem.且菜单项附带触碰按钮时,自动放大的效果. 温馨提示:本节内容比较多,需要大家慢慢分析,不要急于求成. 本节组织结构如下: 一.介绍CCMenu. 二.介绍CCMenuItem,及其具体的六个子类. 三.代码实战. [一.菜单CCMenu] 菜单CCMenu是专门用来承载菜单按钮的CCLayer图

cocos2dx基础篇(13)——按钮控件CCControlButton

[引言] 按钮类CCControlButton继承于控件类CCControl. 控件类CCControl主要向子类提供了一系列的控件触发事件.当子控件触发相关的事件后,就会执行相关的控件事件回调函数.这与之前讲的CCMenu中的菜单按钮回调是类似的. 控件类CCControl主要有三个子类: (1)开关控件CCControlSwitch (2)滑块控件CCControlSlider (3)按钮控件CCControlButton 本节讲的是其子类其中之一:按钮类CCControlButton. [

cocos2dx基础篇(8)——定时器更新schedule、update

[本节内容] 定时器在大部分游戏中是不可或缺的,即每隔一段时间,就要执行相应的刷新体函数,以更新游戏的画面.时间.进度.敌人的指令等等. cocos2dx为我们提供了定时器schedule相关的操作.其操作函数的定义在CCNode中,所以基本上大多数的引擎类都可以设置定时器,如CCLayer.CCSprite.CCMenu等. 定时器更新的方式分为三类: (1)默认定时器:scheduleUpdate(); (2)自定义定时器:schedule(); (3)一次性定时器:scheduleOnce

cocos2dx基础篇(20)——数据存储CCUserDefault

[唠叨] 一个游戏怎么能没有游戏存档呢?在cocos2dx中也提供了一个数据存储类CCUserDefault,可以作为一个轻量级的数据库来使用. 它支持五种数据bool.int.float.double.string的存储. [致谢] http://gl.paea.cn/contents/252ac3e59bc18069.html [CCUserDefault] CCUserDefault类和之前讲的CCDirector.SimpleAudioEngine一样,都是采用单例模式. 可以通过sha

cocos2dx基础篇(16)——滚动视图CCScrollView

[唠叨] 本节要讲讲滚动视图CCScrollView,相信玩过手游的同学们应该对它不会陌生吧. 例如:愤怒的小鸟的游戏场景里大大的地图,手机的屏幕肯定无法完全显示的,所以需要通过触摸滚动才能显示大地图的其他区域:排行榜中上下滑动来查看其他玩家的排名:以及手机上主界面左右滑动来切换界面等等. 如下图为屏幕滚动,切换手机的界面. [致谢] http://blog.csdn.net/paea_gulang/article/details/10283601 http://bbs.firedragonpz

cocos2dx基础篇(28)——单例模式

[唠叨] 单例模式,说的通俗一点就是:创建某个类的全局唯一静态实例对象.也就是说从它创建开始,一直到整个游戏程序结束才会释放资源,期间一直保存的着数据. 单例类在大部分游戏中应该是必不可少的部分,如整个游戏音乐的开关控制.数据的加载与存储等都需要一个全局访问点来控制,那就需要用到单例类了. [致谢] http://blog.csdn.net/star530/article/details/22610229 [单例模式] 有一个很形象的比喻,摘自:http://blog.csdn.net/star