• CCNode
节点类是Cocos2D-x中的主要类,继承自CCObject。
任何需要画在屏幕上的对象都是节点类。最常用的节点类包括场景类(CCScene)、布景层类(CCLayer)、人物精灵类(CCSprite)、菜单类(CCMenu)
CCNode类包含的主要功能如下:
每个节点都可以包含有子节点。
节点含有周期性的毁掉方法(Schedule、Unschedule等)。
可以含有动作(CCAction)。
  • CCDirector
CCDirector类是Cocos2D-x游戏引擎的核心,用来创建并且控制着主屏幕的显示,同时控制场景的显示时间和方式。在整个游戏里一般只有一个导演。游戏开始、结束、暂停都会调用CCDirector类的方法。
CCDirector类具有如下功能:
1.初始化OpenGL回话。
2.设置OpenGL的一些参数和方式。
3.访问和改变场景以及访问Cocos2D-x的配置细节。
4.访问视图。
5.设置投影和朝向
需要说明一下,CCDirector是单例模式,调用CCDirector的方法标准:CCDirector::sharedDirector()->函数名
  • CCCamera
CCCamera类可以实现节点对象的缩放和旋转等。
  • CCTouchDispatcher
    1.注册的代理以优先级排序,在addTargetedDelegate()时完成插入,delegate的优先级通过在队列的位置来体现,优先级别高的位置靠前(虽然可以指定优先级数值,但内部没有任何优先级记录),相同优先级的delegates,后插入的位置靠前。
  • CCCardinalSplineBy
    1.这个类是样条曲线动作,其创建函数CCCardinalSplineBy::create(float duration, cocos2d::CCPointArray *points, float tension);中duration是时间间隔,points是控制点列表,tension是松紧程度。tension==1时,样条线是分段直线。tension<1向外松弛弯曲,tension>1向内缩紧弯曲。By动作是以当前坐标为新坐标原点。
  • CCLayer,CCScene
    这两个类最特殊的一点是m_bIgnoreAnchorPoint(2.0.4版本是这名变量名,之前的好像是m_bRelativeToAnchorPoint),其作用是表明在布置CCLayer和CCScene对象时,是否基于AnchorPoint。CCLayer和CCScene中这两个变量都是true(2.0.4的CCNode构造函数中的注释写错了,它居然说CCLayer,CCScene应该设置这个为true)。但即使m_bIgnoreAnchorPoint为true,AnchorPoint在旋转中起到轴心点作用并没有变,所以在CCLayer构造函数中调用了setAnchorPoint( 0.5, 0.5 )来保证中心旋转点。另外我之前在追究m_bIgnoreAnchorPoint的作用时,一直被一段代码困惑,后来弄明白了,这里说一下。
    [cpp] 
    view plain
    copy

     

    1. CCAffineTransform CCNode::nodeToParentTransform(void)
    2. {
    3. if (m_bIsTransformDirty)
    4. {
    5. // Translate values
    6. float x = m_tPosition.x;
    7. float y = m_tPosition.y;
    8. if (m_bIgnoreAnchorPointForPosition)
    9. {
    10. x += m_tAnchorPointInPoints.x;
    11. y += m_tAnchorPointInPoints.y;
    12. }
    13. // Rotation values
    14. float c = 1, s = 0;
    15. if (m_fRotation)
    16. {
    17. float radians = -CC_DEGREES_TO_RADIANS(m_fRotation);
    18. c = cosf(radians);
    19. s = sinf(radians);
    20. }
    21. bool needsSkewMatrix = ( m_fSkewX || m_fSkewY );
    22. // optimization:
    23. // inline anchor point calculation if skew is not needed
    24. if (! needsSkewMatrix && !m_tAnchorPointInPoints.equals(CCPointZero))
    25. {
    26. x += c * -m_tAnchorPointInPoints.x * m_fScaleX + -s * -m_tAnchorPointInPoints.y * m_fScaleY;
    27. y += s * -m_tAnchorPointInPoints.x * m_fScaleX +  c * -m_tAnchorPointInPoints.y * m_fScaleY;
    28. }
    29. // Build Transform Matrix
    30. m_tTransform = CCAffineTransformMake( c * m_fScaleX,  s * m_fScaleX,
    31. -s * m_fScaleY, c * m_fScaleY,
    32. x, y );
    33. // XXX: Try to inline skew
    34. // If skew is needed, apply skew and then anchor point
    35. if (needsSkewMatrix)
    36. {
    37. CCAffineTransform skewMatrix = CCAffineTransformMake(1.0f, tanf(CC_DEGREES_TO_RADIANS(m_fSkewY)),
    38. tanf(CC_DEGREES_TO_RADIANS(m_fSkewX)), 1.0f,
    39. 0.0f, 0.0f );
    40. m_tTransform = CCAffineTransformConcat(skewMatrix, m_tTransform);
    41. // adjust anchor point
    42. if (!m_tAnchorPointInPoints.equals(CCPointZero))
    43. {
    44. m_tTransform = CCAffineTransformTranslate(m_tTransform, -m_tAnchorPointInPoints.x, -m_tAnchorPointInPoints.y);
    45. }
    46. }
    47. m_bIsTransformDirty = false;
    48. }
    49. return m_tTransform;
    50. }

    上述代码中我一直不明白为什么m_bIgnoreAnchorPoint是true的时候,将m_tAnchorPointInPoints的坐标加入了原坐标。

    [cpp] 
    view plain
    copy

     

    1. if (m_bIgnoreAnchorPointForPosition)
    2. {
    3. x += m_tAnchorPointInPoints.x;
    4. y += m_tAnchorPointInPoints.y;
    5. }

    后来才明白,这是为了补偿后面旋转带来的偏差的。

    [cpp] 
    view plain
    copy

     

    1. // optimization:
    2. // inline anchor point calculation if skew is not needed
    3. if (! needsSkewMatrix && !m_tAnchorPointInPoints.equals(CCPointZero))
    4. {
    5. x += c * -m_tAnchorPointInPoints.x * m_fScaleX + -s * -m_tAnchorPointInPoints.y * m_fScaleY;
    6. y += s * -m_tAnchorPointInPoints.x * m_fScaleX +  c * -m_tAnchorPointInPoints.y * m_fScaleY;
    7. }
  • CCAction这个类是动作的基类,有点需要注意的就是,我们不光可以通过CCSpawn让动画一起播放,我们在调用runAction的时候本身就是一种一起播放(即在调用runAction的时候如果已经有动画播放,那么新动画和旧动画即将一起播放)
    [cpp] 
    view plain
    copy

     

  • CCMotionStreak(拖动渐隐效果类)
    这个类是个运动残影功能,拖一个影子在背后。
    static CCMotionStreak* create(float fade, float minSeg, float stroke, ccColor3B color, const char* path);
    fade:残影残存时间。
    misSeg:测试了一会发现没太多感觉。一般设置为3就可以了。
    stroke:残影的宽度。
    color:将会添加再残影纹理上的颜色。
    stroke:是其中的path是纹理路径,

    这个纹理将成为残影,color将会和纹理叠加。值得注意的是,这个类重载了setPosition并使用另外一个坐标变量,所以执行一些位置类运动会诡异的现象,如CCMoveBy,因为这些运动会通过原来的坐标变量来获取目标对象的起始坐标,但原来坐标已经被废弃。

  • CCAnimationCache
    这个类相当于简单的动画管理器,我们将动画加进去之后,以后可以方便的去取。这个函数加载动画的函数中有个比较好的函数:
    void addAnimationsWithFile(const char* plist);
    读取一个属性列表文件,然后根据里面列出的所有动画名称及其相关的序列帧就可以加载多个动画,前提是这些动画的序列帧已经存在于SpriteFrameCache中。
  • CCTouch
    这类中是对当前用户触摸点的封装,但更值得庆幸的是,在一次触摸消息流程中,你能通过这个类获得上一次坐标点,比如用户触摸屏幕,并滑动,最后松开。在这个过程中,你始终能通过getPreviousLocation()获得上一个坐标点。
  • CCRenderTexture
    这个类是个渲染目标体,我们可以通过begin,end函数组织一次绘画。在begin(),end()之间使用节点的visit()函数,即可将元素画到渲染目标体上。这里有一点很重要,所有的渲染默认情况下都是会开启颜色混合的。默认的是GL_ONE, GL_ONE_MINUS_SRC_ALPHA。颜色混合公式中也会作用于alpha值。

cocos2d-x 类大全及其概要的更多相关文章

  1. [WinForm]WinForm跨线程UI操作常用控件类大全

    前言 在C#开发的WinForm窗体程序开发的时候,经常会使用多线程处理一些比较耗时之类的操作.不过会有一个问题:就是涉及到跨线程操作UI元素. 相信才开始接触的人一定会遇上这个问题. 为了解决这个问 ...

  2. C# 文件操作类大全

      C# 文件操作类大全 时间:2015-01-31 16:04:20      阅读:1724      评论:0      收藏:0      [点我收藏+] 标签: 1.创建文件夹 //usin ...

  3. File 文件操作类 大全

    File  文件操作类  大全 许多人都会对文件操作感到很难  我也是  但是一个好的项目中必定会涉及到文件操作的 文件的复制 粘贴  等等等 公司大佬写了 一个文件操作的工具类 感觉还是棒棒的啦   ...

  4. 新手须知 QT类大全

    QT类大全,在行内容中罗列出来了,希望大家多看看,如果是API就更好了,但可惜不是.这些是一些大类,请多做参考. QApplication 应用程序类 QLabel 标签类 QPushButton 按 ...

  5. cocos2d CCNode类(节点属性大全)

    1 CCNode是cocos2d-x中一个很重要的类,CCNode是场景.层.菜单.精灵等的父类.而我们在使用cocos2d-x时,接触最多的就是场景.层.菜单.精灵等.所以有必要先弄懂CCNode类 ...

  6. FTP基本操作类大全,外加c#基础公共帮助类

    总结平时用到的一些FTP操作类,方便需要的用到.github地址:https://github.com/Jimmey-Jiang/Common.Utility 1.连接FTP服务器 /// <s ...

  7. C# 各种帮助类大全

    前言 此篇专门记录一些常见DB帮助类及其他帮助类,以便使用时不用重复造轮子. DBHelper帮助类 ①首当其冲的就是Sql Server帮助类,创建名为DbHelperSQL 的类 ,全部代码如下: ...

  8. 对象属性拷贝工具类大全==>Bean的属性拷贝从此不用愁

    大家在做java开发时,肯定会遇到api层参数对象传递给服务层,或者把service层的对象传递给dao层,他们之间又不是同一个类型对象,但字段又是一样,如果还是用普通的get.set方式来处理话,比 ...

  9. Java Utils工具类大全(转)

    源码和jar见:https://github.com/evil0ps/utils #Java Utils --- 封装了一些常用Java操作方法,便于重复开发利用. 另外希望身为Java牛牛的你们一起 ...

随机推荐

  1. UML02-用例图

    1.泛化表示一般和特殊的关系.用例之间存在泛化关系,参与者之间存在泛化关系,参与者和用例之间存在泛化关系. 2.画出用例图. 系统允许管理员通过磁盘加载存货数据来运行存货清单报告: 管理员通过从磁盘加 ...

  2. FastDFS的学习与使用(大量帖子)

    http://www.oschina.net/p/fastdfs http://bbs.chinaunix.net/forum-240-1.html

  3. oracle逻辑导入小错:提示无法创建日志提示

    ***********************************************声明*************************************************** ...

  4. Python标准库:内置函数dict(**kwarg)

    本函数是从一个字典參数构造一个新字典.參数kwarg是键值对的字典參数.以两个*开头的參数.就会收集成字典形式. 样例: #dict() #以键对方式构造字典 d1 = dict(one = 1, t ...

  5. Delphi反射

    最近在写一个框架,需要用到反射,与C# java这些原生支持反射的语言不同,delphi对反射的支持相对要弱一些,但也够用了,其实C#的大部分的思想还是从 delphi而来,毕竟都是安德鲁斯的杰作. ...

  6. 矩形、占位符组件——axure线框图部件库介绍

    矩形组件和占位符没有太多的区别,这里我们主要讲解矩形组件的操作和使用,占位符的操作各位可以按照矩形的操作方法进行练习一下. 矩形组件是一个矩形,它可以用来做很多的工作,比如页面上需要一块蓝色的背景,就 ...

  7. mfc修改应用程序外观

    1.在窗口创建前修改窗体外观 在BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)函数中修改,其中CREATESTRUCT结构中有诸如窗口大小 ...

  8. 北京出dell s2740显示器 1900 - V2EX

    水木社区归档站 北京出dell s2740显示器 1900 - V2EX 北京出dell s2740显示器 1900 By kekex · 6 小时 6 分钟前 · 188 次点击 购于今年4月份 镜 ...

  9. 使用JDBC进行数据库的事务操作(2)

    本篇将讲诉如何使用JDBC进行数据库有关事务的操作.在上一篇博客中已经介绍了事务的概念,和在MySQL命令行窗口进行开启事务,提交事务以及回滚事务的操作. 似乎事务和批处理都可以一次同时执行多条SQL ...

  10. catalan 数——卡特兰数(转)

    Catalan数——卡特兰数 今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来后来查了下,原来是Catalan数.悲剧啊,现在整理一下 一.Catalan数的定义令h(1) ...