加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2d-x 节点类CCNode

发布时间:2020-12-14 19:13:40 所属栏目:百科 来源:网络整理
导读:转载: http://www.jb51.cc/article/p-uiebpjlc-ep.html 节点类CCNode可以说是游戏元素的祖宗了,基本上我们看得到的游戏元素都是以它为原型进行扩展的。像CCScene,CCLayer,CCSprite,CCMenu,CCSpriteBatchNode等等都是从CCNode继承而来。另外如果我们要

转载:http://www.52php.cn/article/p-uiebpjlc-ep.html

节点类CCNode可以说是游戏元素的祖宗了,基本上我们看得到的游戏元素都是以它为原型进行扩展的。像CCScene,CCLayer,CCSprite,CCMenu,CCSpriteBatchNode等等都是从CCNode继承而来。另外如果我们要自定义精灵,那么从CCNode继承也是一个很不错的选择。


1.概况


CCNode直接从CCObject继承而来,有如下几个特点:

(1)可以包含其他CCNode节点,可以进行添加/获取/删除子节点操作。

(2)可以执行周期性的回调任务。

(3)可以执行动作。

一些子类化的节点提供了更为丰富的特性和功能。


2.属性

[cpp] view plain copy
  1. FeaturesofCCNode:
  2. -position//位置,默认(0,0)
  3. -scale(x,y)//缩放,默认(1,1)
  4. -rotation(indegrees,clockwise)//旋转,默认为0
  5. -skew//倾斜,默认为0
  6. -CCCamera(aninterfacetogluLookAt)//CCCamera,视点转换,每个节点都有,默认指向节点中心
  7. -CCGridBase(todomeshtransformations)//CCGridBase,网类转变
  8. -anchorpoint//锚点,默认(0,0)
  9. -size//尺寸,默认(0,0)
  10. -visible//可见
  11. -z-order//z轴值
  12. -openGLzposition//OpenGLz值

3.接口


3.1.初始化

[cpp] view plain copy
  1. //初始化函数,成功返回true
  2. virtualboolinit();
  3. //分配内存空间,调用init并添加autoRelease标记
  4. staticCCNode*create(void);
  5. //返回描述字符串
  6. constchar*description(void);

3.2.图形属性

[cpp] view plain copy
  1. //设置/获取Z轴顺序,Z轴大的覆盖Z轴小的
  2. virtualvoidsetZOrder(intzOrder);
  3. virtualvoid_setZOrder(intz);
  4. virtualintgetZOrder();
  5. //设置/获取OpenGLZ轴顶点
  6. virtualvoidsetVertexZ(floatvertexZ);
  7. virtualfloatgetVertexZ();
  8. //设置/获取缩放值
  9. virtualvoidsetScaleX(floatfScaleX);
  10. virtualfloatgetScaleX();
  11. virtualvoidsetScaleY(floatfScaleY);
  12. virtualfloatgetScaleY();
  13. virtualvoidsetScale(floatscale);
  14. virtualfloatgetScale();
  15. virtualvoidsetScale(floatfScaleX,floatfScaleY);
  16. //设置/获取位置
  17. virtualvoidsetPosition(constCCPoint&position);
  18. virtualconstCCPoint&getPosition();
  19. virtualvoidsetPosition(floatx,floaty);
  20. virtualvoidgetPosition(float*x,float*y);
  21. virtualvoidsetPositionX(floatx);
  22. virtualfloatgetPositionX(void);
  23. virtualvoidsetPositionY(floaty);
  24. virtualfloatgetPositionY(void);
  25. //设置/获取倾斜角度
  26. virtualvoidsetSkewX(floatfSkewX);
  27. virtualfloatgetSkewX();
  28. virtualvoidsetSkewY(floatfSkewY);
  29. virtualfloatgetSkewY();
  30. //设置/获取锚点
  31. virtualvoidsetAnchorPoint(constCCPoint&anchorPoint);
  32. virtualconstCCPoint&getAnchorPoint();
  33. virtualconstCCPoint&getAnchorPointInPoints();
  34. //设置/获取大小
  35. virtualvoidsetContentSize(constCCSize&contentSize);
  36. virtualconstCCSize&getContentSize()const;
  37. //设置/获取可见性
  38. virtualvoidsetVisible(boolvisible);
  39. virtualboolisVisible();
  40. //设置/获取旋转角度
  41. virtualvoidsetRotation(floatfRotation);
  42. virtualfloatgetRotation();
  43. virtualvoidsetRotationX(floatfRotaionX);
  44. virtualfloatgetRotationX();
  45. virtualvoidsetRotationY(floatfRotationY);
  46. virtualfloatgetRotationY();

3.3.节点操作

[cpp] view plain copy
  1. //添加/获取子节点,可以带Z轴顺序(默认为0)和标签
  2. virtualvoidaddChild(CCNode*child);
  3. virtualvoidaddChild(CCNode*child,intzOrder);
  4. virtualvoidaddChild(CCNode*child,intzOrder,inttag);
  5. CCNode*getChildByTag(inttag);
  6. virtualCCArray*getChildren();
  7. unsignedintgetChildrenCount(void)const;
  8. //设置/获取父节点
  9. virtualvoidsetParent(CCNode*parent);
  10. virtualCCNode*getParent();
  11. //从父节点中移除自身,默认cleanup为true
  12. virtualvoidremoveFromParent();
  13. virtualvoidremoveFromParentAndCleanup(boolcleanup);
  14. //移除子节点
  15. virtualvoidremoveChild(CCNode*child);
  16. virtualvoidremoveChild(CCNode*child,boolcleanup);
  17. virtualvoidremoveChildByTag(inttag);
  18. virtualvoidremoveChildByTag(inttag,boolcleanup);
  19. //移除所有节点
  20. virtualvoidremoveAllChildren();
  21. virtualvoidremoveAllChildrenWithCleanup(boolcleanup);
  22. //重新设置节点顺序
  23. virtualvoidreorderChild(CCNode*child,intzOrder);

3.4.标签和用户数据

[cpp] view plain copy
  1. //设置/获取tag
  2. virtualintgetTag()const;
  3. virtualvoidsetTag(intnTag);
  4. //设置/获取userdata,它是一个指针可以指向你想要的任意数据块,不过记得要释放
  5. virtualvoid*getUserData();
  6. virtualvoidsetUserData(void*pUserData);
  7. //设置/获取CCObject,和上面一样,只是数据换成了CCObject对象
  8. virtualCCObject*getUserObject();
  9. virtualvoidsetUserObject(CCObject*pUserObject);

3.5.事件回调

[cpp] view plain copy
  1. //事件回调
  2. //节点开始进入触发
  3. virtualvoidonEnter();
  4. //节点完成进入触发
  5. virtualvoidonEnterTransitionDidFinish();
  6. //节点退出触发
  7. virtualvoidonExit();
  8. //如果节点退出有过渡动画,动画开始时触发
  9. virtualvoidonExitTransitionDidStart();
  10. //停止动画和调度器
  11. virtualvoidcleanup(void);

3.6.动作

[cpp] view plain copy
  1. //获取/设置动作管理器
  2. virtualvoidsetActionManager(CCActionManager*actionManager);
  3. virtualCCActionManager*getActionManager();
  4. //运行动作
  5. CCAction*runAction(CCAction*action);
  6. //停止动作
  7. voidstopAllActions(void);
  8. voidstopAction(CCAction*action);
  9. voidstopActionByTag(inttag);
  10. CCAction*getActionByTag(inttag);
  11. //获取正在运行动作数
  12. unsignedintnumberOfRunningActions(void);

3.7.调度器和定时器

[cpp] view plain copy
  1. //获取/设置调度器
  2. virtualvoidsetScheduler(CCScheduler*scheduler);
  3. virtualCCScheduler*getScheduler();
  4. //检测某个调度器是否有在运行
  5. boolisScheduled(SEL_SCHEDULEselector);
  6. //开启update调度
  7. voidscheduleUpdate(void);
  8. //设置调度优先级
  9. voidscheduleUpdateWithPriority(intpriority);
  10. //关闭update调度器
  11. voidunscheduleUpdate(void);
  12. //开启/关闭/恢复/暂停调度器
  13. voidschedule(SEL_SCHEDULEselector,floatinterval,unsignedintrepeat,floatdelay);
  14. voidschedule(SEL_SCHEDULEselector,floatinterval);
  15. voidscheduleOnce(SEL_SCHEDULEselector,floatdelay);
  16. voidschedule(SEL_SCHEDULEselector);
  17. voidunschedule(SEL_SCHEDULEselector);
  18. voidunscheduleAllSelectors(void);
  19. voidresumeSchedulerAndActions(void);
  20. voidpauseSchedulerAndActions(void);
  21. //每帧调用函数
  22. virtualvoidupdate(floatdelta);

3.8.坐标转换

[cpp] view plain copy
  1. //坐标转换相关,这一部分后面再介绍
  2. CCPointconvertToNodeSpace(constCCPoint&worldPoint);
  3. CCPointconvertToWorldSpace(constCCPoint&nodePoint);
  4. CCPointconvertToNodeSpaceAR(constCCPoint&worldPoint);
  5. CCPointconvertToWorldSpaceAR(constCCPoint&nodePoint);
  6. CCPointconvertTouchToNodeSpace(CCTouch*touch);
  7. CCPointconvertTouchToNodeSpaceAR(CCTouch*touch);

3.9.其他

[cpp] view plain copy
  1. //获取/设置着色程序
  2. virtualCCGLProgram*getShaderProgram();
  3. virtualvoidsetShaderProgram(CCGLProgram*pShaderProgram);
  4. //获取CCCamera对象
  5. virtualCCCamera*getCamera();
  6. //节点是否在运行
  7. virtualboolisRunning();
  8. //绘制节点
  9. virtualvoiddraw(void);
  10. //递归访问节点
  11. virtualvoidvisit(void);
  12. //返回所占矩形,节点坐标系
  13. CCRectboundingBox(void);

4.CCNodeRGBA


CCNodeRGBA继承于CCNode,所以它拥有CCNode的所有特性,并且它也继承于CCRGBAProtocol。从名字看来我们就知道它是一个带有颜色和透明度的节点。

所以它比起CCNode就多了2个特性,Opacity和RGB值。

如果要给子节点传递透明度属性,那么需要设置setCascadeOpacityEnabled(true),如果传递的过程中遇到了CCNode,那么传递会中断。颜色值的传递也是一样的道理。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读