cocos2d-x: 常用组件默认参数

前言

本文总结了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,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 同CCNodeRGBA 同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 同CCMenuItem 同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

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为例)

  1. NodeRGBA被标记为deprecated. 因此,之前继承自CCNodeRGBA的类都会有变化,比如下文将提到的Sprite,MenuItem.
  2. Scene可通过createWithSize指定contentSize的方式来创建.
  3. LayerColor不再继承LayerRGBA,而是直接继承Layer. LayerRGBA被标记为deprecated. LayerColor与Layer一样,默认的contentSize是winSize,其子类LayerGradient也是如此。
  4. Sprite不再继承自CCNodeRGBA,而是直接继承Node。初始的锚点设置为(0.5,0.5) (默认的变换锚点为中心),是在initWithTexture这个初始化方法里做的属性赋值,其它几个初始化方法,最终调用的都是initWithTexture(Texture2D *texture,const Rect& rect,bool rotated).
  5. LabelBMFont的初始contentSize为_label->getContentSize(). _label为其member变量,类型为Label.
  6. LabelTTF不再继承CCSprite,而是继承Node. 内部包含一个Label类型的member变量_renderLabel.
  7. TextFieldTTF不再继承CCLabelTTF,而是继承Label.
  8. Menu不再继承CCLayerRGBA,而是继承Layer.

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...