转载: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.属性
- FeaturesofCCNode:
- -position
- -scale(x,y)
- -rotation(indegrees,clockwise)
- -skew
- -CCCamera(aninterfacetogluLookAt)
- -CCGridBase(todomeshtransformations)
- -anchorpoint
- -size
- -visible
- -z-order
- -openGLzposition
3.接口
3.1.初始化
- virtualboolinit();
- staticCCNode*create(void);
- constchar*description(void);
3.2.图形属性
- virtualvoidsetZOrder(intzOrder);
- virtualvoid_setZOrder(intz);
- virtualintgetZOrder();
- 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.节点操作
- 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();
- virtualvoidremoveFromParent();
- virtualvoidremoveFromParentAndCleanup(boolcleanup);
- virtualvoidremoveChild(CCNode*child);
- virtualvoidremoveChild(CCNode*child,boolcleanup);
- virtualvoidremoveChildByTag(inttag);
- virtualvoidremoveChildByTag(inttag,boolcleanup);
- virtualvoidremoveAllChildren();
- virtualvoidremoveAllChildrenWithCleanup(boolcleanup);
- virtualvoidreorderChild(CCNode*child,intzOrder);
3.4.标签和用户数据
- virtualintgetTag()const;
- virtualvoidsetTag(intnTag);
- virtualvoid*getUserData();
- virtualvoidsetUserData(void*pUserData);
- virtualCCObject*getUserObject();
- virtualvoidsetUserObject(CCObject*pUserObject);
3.5.事件回调
- virtualvoidonEnter();
- virtualvoidonEnterTransitionDidFinish();
- virtualvoidonExit();
- virtualvoidonExitTransitionDidStart();
- virtualvoidcleanup(void);
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);
- voidscheduleUpdate(void);
- voidscheduleUpdateWithPriority(intpriority);
- 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.其他
- virtualCCGLProgram*getShaderProgram();
- virtualvoidsetShaderProgram(CCGLProgram*pShaderProgram);
- virtualCCCamera*getCamera();
- virtualboolisRunning();
- virtualvoiddraw(void);
- virtualvoidvisit(void);
- CCRectboundingBox(void);
4.CCNodeRGBA
CCNodeRGBA继承于CCNode,所以它拥有CCNode的所有特性,并且它也继承于CCRGBAProtocol。从名字看来我们就知道它是一个带有颜色和透明度的节点。
所以它比起CCNode就多了2个特性,Opacity和RGB值。
如果要给子节点传递透明度属性,那么需要设置setCascadeOpacityEnabled(true),如果传递的过程中遇到了CCNode,那么传递会中断。颜色值的传递也是一样的道理。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|