天天看点

Cocos2D学习笔记(1)- 常用的类

1、坐标系

    >屏幕坐标系(uikit):原点在左上角!

    >opengl坐标系:原点在屏幕的左下角!

2、游戏设计:director——scene——layer——sprite。

    >ccdirector:导演类,相当于是游戏策划,负责整个游戏的布局和运行规则的制定。

    >ccscene:场景类,每个场景可以是一个界面或一个关卡。

    >cclayer:图层类,为了方便游戏界面的渲染管理。

    >ccsprite:精灵类,

小结:一个导演类(ccdirector)可以指挥多个场景类(ccscene),一个场景类里面可以有多个图层(cclayer),一个图层里可以有多个精灵(ccsprite)被显示。

3、节点类(ccnode)

    >节点类是cocos2d-x里的主要类,继承自ccobject。

>任何需要华仔屏幕上的对象都是节点类。例如:最常用的ccscene,cclayer,ccsprite,ccmenu类都是继承自ccnode类。

    >节点类的主要功能:

        >每个节点都可以有子节点。

        >节点含有周期性回调方法(schedule、unschedule等)。

        >节点可以有动作(ccaction)。

    >ccnode可以为它自己和子节点添加额外的功能。

    >子节点可以有一些相对于父节点的动作(ccaction)。

4、场景类(ccscene)

    >ccscene类继承自ccnode类。

>cctransitionscene类是ccscene类的子类,是切换场景类,提供许多场景切换时的效果函数。

>不要在节点初始化的ini函数中调用replacescene函数,导演类不允许在一个节点初始化的调用场景替换,否则会导致程序奔溃。

>压入场景(pushscene)和弹出场景(popscene)。他们都可以用来显示场景和保留当前场景并显示新场景;不同的是他们不把旧场景从内存中释放掉,这样可以提高加载速度,这时需要注意,如果内存不足的话,建议使用replacescene函数。

5、图层类(cclayer)

图层类(cclayer)是ccnode类的子类,并且在此基础上实现触屏事件代理(toucheventsdelegate)协议,可以实现ccnode类的供能,并且可以处理输入,包括传感器,加速度传感器。

    >每个游戏场景都可以有很多个图层,每一层负责各自的任务。

    子类:

>颜色布景层类(cclayercolor):包含cclayer的功能,并提供两个拓展功能,可以为布景层添加颜色,以及设置不透明度。

      >多层布景层类(cclayermultiplex):用来管理同一个场景中的不同layer!

>菜单类(ccmenu):ccmenu是一个菜单项的容器,用来装载各种菜单项。菜单项可以是文字,图片!ccmenu还提供了alignitemsvertically和align-itemshorizontally等函数,分别表示垂直对齐和水平对齐。

        >控件类(cccontrol):

>拖动滑块控件类(cccontrolslider);

  >颜色选择盘控件类(cccontrolcolourpicker);

            >开关按钮

控件类(cccontrolswitch);

            >按钮控件类(cccontrolbutton);

6、精灵类(ccsprite)

    精灵类ccsprite是一张二维的图片对象,他可以用一张图片或者一张图片的一块矩形部分来定义。

>贴图类(cctexture2d);在openggl中称图片为贴图,在cocosd-x中cctextured就是图片对象的意思,可以通过它创建精灵等对象。cctexture2d类是精灵类和其相关基础的基础。

        >精灵批处理类(ccspritebatchnode);

>精灵帧类(ccspriteframe);精灵帧类的概念是相对于动画儿产生的。一个精灵是固定节点,他可以拥有许多精灵帧,在他们之间切换就形成了动画。

>精灵帧缓存类(ccspriteframecache);精灵帧缓存类ccspriteframecache用来存储精灵帧,提前缓存起来有助于提高程序的效率。ccspriteframecache是一个单例模式,不属于某个精灵类,是所有精灵共享使用的。

7、摄像机类(cccamera)

所有的节点都拥有一个摄像机类cccamera。只有通过摄像机类,节点才能被渲染出来。当节点发生缩放旋转和位置变化的时候,都需要覆盖cccamera类,让cccamera类重新渲染。

注意:这里需要说明的是,在三维效果中,使用cccamera类是可以的,但是如果只是一些二维特效的话,那么更推荐使用ccfollow类。

8、容器类

    >ccarray类可以理解成是一个数组的容器,装载的对象只要是ccobject的子类就可以。

    >ccdictionary字典类;

9、拖动渐隐效果类(ccmotionstreak)

10、绘制图形

11、时间调度

12、动作类(ccaction)

    >有限时间动作(ccfinitetimeaction)

>瞬时动作(ccactioninstant):顾名思义,就是直接调用结果的动作,这中间不产生任何的动画效果,其中执行回调函数。

        >延时动作(ccactioninterval):会在调用时形成动画效果。

    >跟随(ccfollow)

    >移动速度(ccspeed)