转载:http://www.jb51.cc/article/p-uiebpjlc-ep.html
节点类CCNode可以说是游戏元素的祖宗了,基本上我们看得到的游戏元素都是以它为原型进行扩展的。像CCScene,CCLayer,CCSprite,CCMenu,CCSpriteBatchNode等等都是从CCNode继承而来。另外如果我们要自定义精灵,那么从CCNode继承也是一个很不错的选择。
1.概况
CCNode直接从CCObject继承而来,有如下几个特点:
(1)可以包含其他CCNode节点,可以进行添加/获取/删除子节点操作。
(2)可以执行周期性的回调任务。
(3)可以执行动作。
一些子类化的节点提供了更为丰富的特性和功能。
2.属性
- FeaturesofCCNode:
- -position//位置,默认(0,0)
- -scale(x,y)//缩放,默认(1,1)
- -rotation(indegrees,clockwise)//旋转,默认为0
- -skew//倾斜,默认为0
- -CCCamera(aninterfacetogluLookAt)//CCCamera,视点转换,每个节点都有,默认指向节点中心
- -CCGridBase(todomeshtransformations)//CCGridBase,网类转变
- -anchorpoint//锚点,默认(0,0)
- -size//尺寸,默认(0,0)
- -visible//可见
- -z-order//z轴值
- -openGLzposition//OpenGLz值
3.接口
3.1.初始化
3.2.图形属性
- //设置/获取Z轴顺序,Z轴大的覆盖Z轴小的
- virtualvoidsetZOrder(intzOrder);
- virtualvoid_setZOrder(intz);
- virtualintgetZOrder();
- //设置/获取OpenGLZ轴顶点
- virtualvoidsetVertexZ(floatvertexZ);
- virtualfloatgetVertexZ();
- //设置/获取缩放值
- virtualvoidsetScaleX(floatfScaleX);
- virtualfloatgetScaleX();
- virtualvoidsetScaleY(floatfScaleY);
- virtualfloatgetScaleY();
- virtualvoidsetScale(floatscale);
- virtualfloatgetScale();
- virtualvoidsetScale(floatfScaleX,floatfScaleY);
- //设置/获取位置
- virtualvoidsetPosition(constCCPoint&position);
- virtualconstCCPoint&getPosition();
- virtualvoidsetPosition(floatx,floaty);
- virtualvoidgetPosition(float*x,float*y);
- virtualvoidsetPositionX(floatx);
- virtualfloatgetPositionX(void);
- virtualvoidsetPositionY(floaty);
- virtualfloatgetPositionY(void);
- //设置/获取倾斜角度
- virtualvoidsetSkewX(floatfSkewX);
- virtualfloatgetSkewX();
- virtualvoidsetSkewY(floatfSkewY);
- virtualfloatgetSkewY();
- //设置/获取锚点
- virtualvoidsetAnchorPoint(constCCPoint&anchorPoint);
- virtualconstCCPoint&getAnchorPoint();
- virtualconstCCPoint&getAnchorPointInPoints();
- //设置/获取大小
- virtualvoidsetContentSize(constCCSize&contentSize);
- virtualconstCCSize&getContentSize()const;
- //设置/获取可见性
- virtualvoidsetVisible(boolvisible);
- virtualboolisVisible();
- //设置/获取旋转角度
- virtualvoidsetRotation(floatfRotation);
- virtualfloatgetRotation();
- virtualvoidsetRotationX(floatfRotaionX);
- virtualfloatgetRotationX();
- virtualvoidsetRotationY(floatfRotationY);
- virtualfloatgetRotationY();
3.3.节点操作
- //添加/获取子节点,可以带Z轴顺序(默认为0)和标签
- virtualvoidaddChild(CCNode*child);
- virtualvoidaddChild(CCNode*child,intzOrder);
- virtualvoidaddChild(CCNode*child,intzOrder,inttag);
- CCNode*getChildByTag(inttag);
- virtualCCArray*getChildren();
- unsignedintgetChildrenCount(void)const;
- //设置/获取父节点
- virtualvoidsetParent(CCNode*parent);
- virtualCCNode*getParent();
- //从父节点中移除自身,默认cleanup为true
- virtualvoidremoveFromParent();
- virtualvoidremoveFromParentAndCleanup(boolcleanup);
- //移除子节点
- virtualvoidremoveChild(CCNode*child);
- virtualvoidremoveChild(CCNode*child,boolcleanup);
- virtualvoidremoveChildByTag(inttag);
- virtualvoidremoveChildByTag(inttag,boolcleanup);
- //移除所有节点
- virtualvoidremoveAllChildren();
- virtualvoidremoveAllChildrenWithCleanup(boolcleanup);
- //重新设置节点顺序
- virtualvoidreorderChild(CCNode*child,intzOrder);
3.4.标签和用户数据
3.5.事件回调
3.6.动作
- //获取/设置动作管理器
- virtualvoidsetActionManager(CCActionManager*actionManager);
- virtualCCActionManager*getActionManager();
- //运行动作
- CCAction*runAction(CCAction*action);
- //停止动作
- voidstopAllActions(void);
- voidstopAction(CCAction*action);
- voidstopActionByTag(inttag);
- CCAction*getActionByTag(inttag);
- //获取正在运行动作数
- unsignedintnumberOfRunningActions(void);
3.7.调度器和定时器
- //获取/设置调度器
- virtualvoidsetScheduler(CCScheduler*scheduler);
- virtualCCScheduler*getScheduler();
- //检测某个调度器是否有在运行
- boolisScheduled(SEL_SCHEDULEselector);
- //开启update调度
- voidscheduleUpdate(void);
- //设置调度优先级
- voidscheduleUpdateWithPriority(intpriority);
- //关闭update调度器
- voidunscheduleUpdate(void);
- //开启/关闭/恢复/暂停调度器
- voidschedule(SEL_SCHEDULEselector,floatinterval,unsignedintrepeat,floatdelay);
- voidschedule(SEL_SCHEDULEselector,floatinterval);
- voidscheduleOnce(SEL_SCHEDULEselector,floatdelay);
- voidschedule(SEL_SCHEDULEselector);
- voidunschedule(SEL_SCHEDULEselector);
- voidunscheduleAllSelectors(void);
- voidresumeSchedulerAndActions(void);
- voidpauseSchedulerAndActions(void);
- //每帧调用函数
- virtualvoidupdate(floatdelta);
3.8.坐标转换
- //坐标转换相关,这一部分后面再介绍
- CCPointconvertToNodeSpace(constCCPoint&worldPoint);
- CCPointconvertToWorldSpace(constCCPoint&nodePoint);
- CCPointconvertToNodeSpaceAR(constCCPoint&worldPoint);
- CCPointconvertToWorldSpaceAR(constCCPoint&nodePoint);
- CCPointconvertTouchToNodeSpace(CCTouch*touch);
- CCPointconvertTouchToNodeSpaceAR(CCTouch*touch);
3.9.其他
4.CCNodeRGBA
CCNodeRGBA继承于CCNode,所以它拥有CCNode的所有特性,并且它也继承于CCRGBAProtocol。从名字看来我们就知道它是一个带有颜色和透明度的节点。
所以它比起CCNode就多了2个特性,Opacity和RGB值。
如果要给子节点传递透明度属性,那么需要设置setCascadeOpacityEnabled(true),如果传递的过程中遇到了CCNode,那么传递会中断。颜色值的传递也是一样的道理。