版权声明:本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名elloop(包含链接)
前言
本文总结了cocos2d-x常用渲染类的默认属性和它们之间的继承关系,并对比了2.x和3.x在相关方面之间的一些差别。
注意:默认参数的含义是在使用create()方法返回的对象那个时间点的属性。
V2.X (conclude from 2.2.3 source codes)
###Node类
类型 |
锚点 |
忽略锚点 |
contentSize |
position |
直接父类 |
备注 |
CCNode |
(0,0) |
false |
(0, 0) |
(0, 0) |
CCObject |
|
CCNodeRGBA |
同CCNode |
同CCNode |
同CCNode |
同CCNode |
CCNode |
|
CCDrawNode |
同CCNode |
同CCNode |
同CCNode |
同CCNode |
CCNode |
|
CCAtlasNode |
同CCNode |
同CCNode |
同CCNode |
同CCNode |
CCNode |
|
###Scene & Layer
类型 |
锚点 |
忽略锚点 |
contentSize |
position |
直接父类 |
备注 |
CCScene |
(0.5, 0.5) |
true |
winSize |
同CCNode |
CCNode |
|
CCLayer |
(0.5, 0,5) |
true |
winSize |
同CCNode |
CCNode |
|
CCLayerRGBA |
同CCLayer |
同CCLayer |
同CCLayer |
同CCLayer |
CCLayer |
|
CCLayerColor |
同CCLayerRGBA |
同CCLayerRGBA |
默认winSize, 可指定大小create |
同CCLayerRGBA |
CCLayerRGBA |
|
CCLayerGradient |
同CCLayerColor |
同CCLayerColor |
同CCLayerColor |
同CCLayerColor |
CCLayerColor |
|
CCLayerMultiplex |
同CCLayer |
同CCLayer |
同CCLayer |
同CCLayer |
CCLayer |
|
###Sprite
类型 |
锚点 |
忽略锚点 |
contentSize |
position |
直接父类 |
备注 |
CCSprite |
(0.5, 0.5) |
同CCNodeRGBA |
pTexture->getContentSize() |
同CCNodeRGBA |
CCNodeRGBA |
|
CCSpriteBatchNode |
同CCNode |
同CCNode |
同CCNode |
同CCNode |
CCNode |
|
Label类
类型 |
锚点 |
忽略锚点 |
contentSize |
position |
直接父类 |
备注 |
CCLabelAtlas |
同CCAtlasNode |
同CCAtlasNode |
同CCAtlasNode |
同CCAtlasNode |
CCAtlasNode |
|
CCLabelBMFont |
(0.5, 0.5) |
同CCSpriteBatchNode |
(0, 0) |
同CCSpriteBatchNode |
CCSpriteBatchNode |
|
CCLabelTTF |
同CCSprite |
同CCSprite |
同CCSprite |
同CCSprite |
CCSprite |
|
CCTextFieldTTF |
同CCLabelTTF |
同CCLabelTTF |
同CCLabelTTF |
同CCLabelTTF |
CCLabelTTF |
|
类型 |
锚点 |
忽略锚点 |
contentSize |
position |
直接父类 |
备注 |
CCMenu |
(0.5, 0.5) |
true |
winSize |
winSize/2 |
CCLayerRGBA |
|
CCMenuItem |
(0.5, 0.5) |
同CCNodeRGBA |
同CCNodeRGBA |
同CCNodeRGBA |
CCNodeRGBA |
|
CCMenuItemToggle |
同CCMenuItem |
同CCMenuItem |
同CCMenuItem |
同CCMenuItem |
CCMenuItem |
|
CCMenuItemLabel |
同CCMenuItem |
同CCMenuItem |
lable->contentSize |
同CCMenuItem |
CCMenuItem |
|
CCMenuItemFont |
同CCMenuItemLabel |
同CCMenuItemLabel |
同CCMenuItemLabel |
同CCMenuItemLabel |
CCMenuItemLabel |
|
CCMenuItemAtlasFont |
同CCMenuItemLabel |
同CCMenuItemLabel |
同CCMenuItemLabel |
同CCMenuItemLabel |
CCMenuItemLabel |
|
CCMenuItemSprite |
同CCMenuItem |
同CCMenuItem |
m_pNormalImage contentSize |
同CCMenuItem |
CCMenuItem |
|
CCMenuItemImage |
同CCMenuItemSprite |
同CCMenuItemSprite |
m_pNormalImage contentSize |
同CCMenuItemSprite |
CCMenuItemSprite |
|
extensions.
类型 |
锚点 |
忽略锚点 |
contentSize |
position |
直接父类 |
备注 |
CCScrollView |
同CCLayer |
同CCLayer |
同CCLayer |
同CCLayer |
CCLayer |
kCCScrollViewDirectionBoth |
CCScrollView.m_pContainer |
(0, 0) |
false |
同CCLayer |
(0, 0) |
CCLayer |
|
CCTableView |
同CCScrollView |
同CCScrollView |
同CCScrollView |
同CCScrollView |
CCScrollView |
kCCScrollViewDirectionVertical |
CCTMXTiledMap
类型 |
锚点 |
忽略锚点 |
contentSize |
position |
直接父类 |
备注 |
CCTMXTiledMap |
同CCNode |
同CCNode |
max(childSize) |
同CCNode |
CCNode |
|
Particle
类型 |
锚点 |
忽略锚点 |
contentSize |
position |
直接父类 |
备注 |
CCParticleSystem |
同CCNode |
同CCNode |
同CCNode |
同CCNode |
CCNode |
|
CCParticleBatchNode |
同CCNode |
同CCNode |
同CCNode |
同CCNode |
CCNode |
|
CCParticleSystemQuad |
同CCParticleSystem |
同CCParticleSystem |
同CCParticleSystem |
同CCParticleSystem |
CCParticleSystem |
|
CCParticleSun |
同CCParticleSystemQuad |
同CCParticleSystemQuad |
同CCParticleSystemQuad |
winSize/2 |
CCParticleSystemQuad |
太阳 |
CCParticleSpiral |
同CCParticleSystemQuad |
同CCParticleSystemQuad |
同CCParticleSystemQuad |
winSize/2 |
CCParticleSystemQuad |
螺旋 |
CCParticleSnow |
同CCParticleSystemQuad |
同CCParticleSystemQuad |
同CCParticleSystemQuad |
(winSize.width/2, winSize.height/2 + 10) |
CCParticleSystemQuad |
下雪 |
其它粒子效果属性请参考CCParticleExamples.h.
CCTransitionScene
类型 |
锚点 |
忽略锚点 |
contentSize |
position |
直接父类 |
备注 |
CCTransitionScene |
同CCScene |
同CCScene |
同CCScene |
同CCNode |
CCScene |
|
CCTransitionFade |
同CCTransitionScene |
同CCTransitionScene |
同CCTransitionScene |
同CCTransitionScene |
CCTransitionScene |
|
其他过渡场景类请参考:CCTransition.cpp
3.X 和 2.x 的主要不同 (以3.2为例)
- NodeRGBA被标记为deprecated. 因此,之前继承自CCNodeRGBA的类都会有变化,比如下文将提到的Sprite, MenuItem.
- Scene可通过createWithSize指定contentSize的方式来创建.
- LayerColor不再继承LayerRGBA, 而是直接继承Layer. LayerRGBA被标记为deprecated. LayerColor与Layer一样,默认的contentSize是winSize, 其子类LayerGradient也是如此。
- Sprite不再继承自CCNodeRGBA, 而是直接继承Node。初始的锚点设置为(0.5, 0.5) (默认的变换锚点为中心), 是在initWithTexture这个初始化方法里做的属性赋值,其它几个初始化方法,最终调用的都是initWithTexture(Texture2D *texture, const Rect& rect, bool rotated).
- LabelBMFont的初始contentSize为_label->getContentSize(). _label为其member变量,类型为Label.
- LabelTTF不再继承CCSprite, 而是继承Node. 内部包含一个Label类型的member变量_renderLabel.
- TextFieldTTF不再继承CCLabelTTF, 而是继承Label.
- Menu不再继承CCLayerRGBA, 而是继承Layer.