CCLayer函数定义:
游戏需要很多图层来实现功能,比如菜单层(CCMenu)、颜色显示层(CCColorLayer)。
颜色层用于烘托背景,开发者可以填充RGB颜色,设置图层的透明度,移动、闪烁或者渐变。类继承自CCLayer、CCRGBAProtocol(颜色控制)、CCBlendProtocol(混合控制)定义如下:
CCColorLayer有一个子类CCLayerGradient:颜色渐变效果的颜色图层,参数是2个颜色,初始色(透明度)和最终色(透明度)。
CCMenu菜单图层:
存放CCMenuItem及其子类。
CCLayer还有其它子类:UILayer、CCControl、CCScrollView、CCBProxy。
精灵类(CCSprite):
继承关系:
classCC_DLLCCSprite : publicCCNodeRGBA, publicCCTextureProtocol
classCC_DLLCCNodeRGBA : publicCCNode, publicCCRGBAProtocol
classCC_DLLCCTextureProtocol : publicCCBlendProtocol
继承CCNode和两个处理精灵纹理图片的类(颜色管理和纹理图片管理),类自有属性如下:
创建方法如下:
创建纹理对象方法:
CCTextureCache::sharedTextureCache()->addImage(path)
创建精灵帧方法:
集合:CCSpriteBatchNode::create(path,num)
缓冲:CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile(path)
精灵对象:CCSprite::createWithSpriteFrameName(path)
集合和缓冲是提升游戏性能准备的。
精灵集合类(CCSpriteBatchNode):
子类:CCLabelBMFont(字体类)、CCTMXLayer(地图背景类)
对应的纹理图片很丰富,一张图片包含多种文字和许多图块和图片
OpenGLES渲染器的运行原理:把必要的信息传递给图形处理硬件,然后将整个或部分图片渲染。使用精灵集合类,一个集合中的精灵都使用同一张渲染贴图,在绘制的时候就不需要频繁传递贴图信息给图形硬件,提升效率。一个精灵集合绘制的对象出于同一个画面层次,纹理大小存在限制(IOS:1024*1024),并且必须是2的N次方大小。
精灵集合创建方法:
精灵帧缓冲(CCSpriteFrameCache):
存放精灵帧(CCSpriteFrame)对象的缓冲池,CCSpriteFrame直接继承自CCObject,不是CCNode的子类,不能绘制于加入节点链表,作用在于持有一个纹理对象,为精灵对象提供动画支持。
精灵帧的属性:
创建函数:
支持使用纹理创建精灵帧,与创建精灵类似。通过使用精灵帧可以方便的创建精灵对象不用考虑内存,所以精灵帧缓冲包含了游戏所用的精灵帧,纹理来自组合的纹理图片或者是多个单独的纹理图片。精灵帧缓冲支持加载多个精灵帧对象,使用plist描述文件,加载方法如下:
plist文件+问题图片or纹理对象
可以使用Zwoptex纹理编辑器制作纹理
一个实例:
2、文字与字体:
Cocoss2dx有3个文字处理类:CCLabelAtlas、CCLabelBMFont、CCLabelTTF(TTF字体)都继承了CCLabelProtocol协议。如下:
都继承自CCNode,CCLabelTTF继承关系:
继承CCSprite,因此CCTextFieldTTF和CCLabelTTF可以当做精灵对象使用。
CCLabelTTF的创建函数:
参数说明:文字内容,字体名称,字体尺寸,标签尺寸,文字水平对齐方式,文字竖直对齐方式
实例可以参考:samples\Cpp\TestCpp\Classes\FontTest\FontTest.cpp showFont函数
BMFont标签类(CCLabelBMFont):
继承关系:
继承自CCSpriteBatchNode(精灵集合),使用自定义文字,开发者可以自定义字体,
使用BMFont(http://www.angelcode.com/products/bmfont/)编辑器编辑字体图集。
实例:samples\Cpp\TestCpp\Classes\LabelTest\LabelTest.cpp Atlas3类
方法为:CCLabelBMFont::create(“文字内容”,”字体路径”)
Atlas标签类(CCLabelAtlas):
继承关系:
继承自CCNode,与TTF不同的是不生成纹理图片,直接使用源纹理图片,因此开发人员可以自定义字体和显示内容。
创建函数:
参数:文字内容,纹理path,宽度,高度,起始位置
3、菜单按钮:
容器CCMenu,节点CCMenuItem,继承关系:
实例:samples\Cpp\TestCpp\Classes\MenuTest\MenuTest.cpp MenuLayerMainMenu对象
4、几何绘制(DRawPrimitives):
CCDrawingPrimitives.h/cpp提供的绘制函数: