生活随笔
收集整理的這篇文章主要介紹了
【玩转cocos2d-x之六】节点类CCNode
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
原創(chuàng)作品,轉(zhuǎn)載請(qǐng)標(biāo)明:http://blog.csdn.net/jackystudio/article/details/12703741
節(jié)點(diǎn)類CCNode可以說(shuō)是游戲元素的祖宗了,基本上我們看得到的游戲元素都是以它為原型進(jìn)行擴(kuò)展的。像CCScene,CCLayer,CCSprite,CCMenu,CCSpriteBatchNode等等都是從CCNode繼承而來(lái)。另外如果我們要自定義精靈,那么從CCNode繼承也是一個(gè)很不錯(cuò)的選擇。
1.概況
CCNode直接從CCObject繼承而來(lái),有如下幾個(gè)特點(diǎn):
(1)可以包含其他CCNode節(jié)點(diǎn),可以進(jìn)行添加/獲取/刪除子節(jié)點(diǎn)操作。
(2)可以執(zhí)行周期性的回調(diào)任務(wù)。
(3)可以執(zhí)行動(dòng)作。
一些子類化的節(jié)點(diǎn)提供了更為豐富的特性和功能。
2.屬性
[cpp]?view plaincopy
Features?of?CCNode:?? -?position????????????????????????????????????? -?scale?(x,?y)????????????????????????????????? -?rotation?(in?degrees,?clockwise)????????????? -?skew????????????????????????????????????????? -?CCCamera?(an?interface?to?gluLookAt?)???????? -?CCGridBase?(to?do?mesh?transformations)?????? -?anchor?point????????????????????????????????? -?size????????????????????????????????????????? -?visible?????????????????????????????????????? -?z-order?????????????????????????????????????? -?openGL?z?position????????????????????????????
3.接口
3.1.初始化
[cpp]?view plaincopy
?????? ???virtual?bool?init();?? ?? ?? ???static?CCNode?*?create(void);?? ????? ????? ???const?char*?description(void);??
3.2.圖形屬性
[cpp]?view plaincopy
?? ????virtual?void?setZOrder(int?zOrder);?? ????virtual?void?_setZOrder(int?z);?? ????virtual?int?getZOrder();?? ?? ?????? ????virtual?void?setVertexZ(float?vertexZ);?? ????virtual?float?getVertexZ();?? ?? ?????? ????virtual?void?setScaleX(float?fScaleX);?? ????virtual?float?getScaleX();?? ????virtual?void?setScaleY(float?fScaleY);?? ????virtual?float?getScaleY();?? ????virtual?void?setScale(float?scale);?? ????virtual?float?getScale();?? ????virtual?void?setScale(float?fScaleX,float?fScaleY);?? ?? ?????? ????virtual?void?setPosition(const?CCPoint?&position);?? ????virtual?const?CCPoint&?getPosition();?? ????virtual?void?setPosition(float?x,?float?y);?? ????virtual?void?getPosition(float*?x,?float*?y);?? ????virtual?void??setPositionX(float?x);?? ????virtual?float?getPositionX(void);?? ????virtual?void??setPositionY(float?y);?? ????virtual?float?getPositionY(void);?? ?????? ?????? ????virtual?void?setSkewX(float?fSkewX);?? ????virtual?float?getSkewX();?? ????virtual?void?setSkewY(float?fSkewY);?? ????virtual?float?getSkewY();?? ?? ?????? ????virtual?void?setAnchorPoint(const?CCPoint&?anchorPoint);?? ????virtual?const?CCPoint&?getAnchorPoint();?? ????virtual?const?CCPoint&?getAnchorPointInPoints();?? ?????? ?????? ????virtual?void?setContentSize(const?CCSize&?contentSize);?? ????virtual?const?CCSize&?getContentSize()?const;?? ?? ?????? ????virtual?void?setVisible(bool?visible);?? ????virtual?bool?isVisible();?? ?? ?????? ????virtual?void?setRotation(float?fRotation);?? ????virtual?float?getRotation();?? ????virtual?void?setRotationX(float?fRotaionX);?? ????virtual?float?getRotationX();?? ????virtual?void?setRotationY(float?fRotationY);?? ????virtual?float?getRotationY();??
3.3.節(jié)點(diǎn)操作
[cpp]?view plaincopy
?? ????virtual?void?addChild(CCNode?*?child);?? ????virtual?void?addChild(CCNode?*?child,?int?zOrder);?? ????virtual?void?addChild(CCNode*?child,?int?zOrder,?int?tag);?? ????CCNode?*?getChildByTag(int?tag);?? ????virtual?CCArray*?getChildren();?? ????unsigned?int?getChildrenCount(void)?const;?? ?????? ?????? ????virtual?void?setParent(CCNode*?parent);?? ????virtual?CCNode*?getParent();?? ?????? ?????? ????virtual?void?removeFromParent();?? ????virtual?void?removeFromParentAndCleanup(bool?cleanup);?? ?? ?????? ????virtual?void?removeChild(CCNode*?child);?? ????virtual?void?removeChild(CCNode*?child,?bool?cleanup);?? ????virtual?void?removeChildByTag(int?tag);?? ????virtual?void?removeChildByTag(int?tag,?bool?cleanup);?? ?? ?????? ????virtual?void?removeAllChildren();?? ????virtual?void?removeAllChildrenWithCleanup(bool?cleanup);?? ?????? ?????? ????virtual?void?reorderChild(CCNode?*?child,?int?zOrder);??
3.4.標(biāo)簽和用戶數(shù)據(jù)
[cpp]?view plaincopy
?? virtual?int?getTag()?const;?? virtual?void?setTag(int?nTag);?? ?? ?? virtual?void*?getUserData();?? virtual?void?setUserData(void?*pUserData);?? ?? ?? virtual?CCObject*?getUserObject();?? virtual?void?setUserObject(CCObject?*pUserObject);??
3.5.事件回調(diào)
[cpp]?view plaincopy
?? ?????? ?????? ????virtual?void?onEnter();?? ?????? ????virtual?void?onEnterTransitionDidFinish();?? ?????? ????virtual?void?onExit();?? ?????? ????virtual?void?onExitTransitionDidStart();?? ?????? ????virtual?void?cleanup(void);??
3.6.動(dòng)作
[cpp]?view plaincopy
?? ????virtual?void?setActionManager(CCActionManager*?actionManager);?? ????virtual?CCActionManager*?getActionManager();?? ?????? ?????? ????CCAction*?runAction(CCAction*?action);?? ?? ?????? ????void?stopAllActions(void);?? ????void?stopAction(CCAction*?action);?? ????void?stopActionByTag(int?tag);?? ????CCAction*?getActionByTag(int?tag);?? ?? ?????? ????unsigned?int?numberOfRunningActions(void);??
3.7.調(diào)度器和定時(shí)器
[cpp]?view plaincopy
?? ????virtual?void?setScheduler(CCScheduler*?scheduler);?? ????virtual?CCScheduler*?getScheduler();?? ?????? ?????? ????bool?isScheduled(SEL_SCHEDULE?selector);?? ?? ?????? ????void?scheduleUpdate(void);?? ?????? ????void?scheduleUpdateWithPriority(int?priority);?? ?????? ????void?unscheduleUpdate(void);?? ?? ?????? ????void?schedule(SEL_SCHEDULE?selector,?float?interval,?unsigned?int?repeat,?float?delay);?? ????void?schedule(SEL_SCHEDULE?selector,?float?interval);?? ????void?scheduleOnce(SEL_SCHEDULE?selector,?float?delay);?? ????void?schedule(SEL_SCHEDULE?selector);?? ????void?unschedule(SEL_SCHEDULE?selector);?? ????void?unscheduleAllSelectors(void);?? ????void?resumeSchedulerAndActions(void);?? ????void?pauseSchedulerAndActions(void);?? ?????? ?????? ????virtual?void?update(float?delta);??
3.8.坐標(biāo)轉(zhuǎn)換
[cpp]?view plaincopy
?? CCPoint?convertToNodeSpace(const?CCPoint&?worldPoint);?? CCPoint?convertToWorldSpace(const?CCPoint&?nodePoint);?? CCPoint?convertToNodeSpaceAR(const?CCPoint&?worldPoint);?? CCPoint?convertToWorldSpaceAR(const?CCPoint&?nodePoint);?? CCPoint?convertTouchToNodeSpace(CCTouch?*?touch);?? CCPoint?convertTouchToNodeSpaceAR(CCTouch?*?touch);??
3.9.其他
[cpp]?view plaincopy
?? virtual?CCGLProgram*?getShaderProgram();?? virtual?void?setShaderProgram(CCGLProgram?*pShaderProgram);?? ?? ?? virtual?CCCamera*?getCamera();?? ?? ?? virtual?bool?isRunning();?? ?? ?? virtual?void?draw(void);?? ?? virtual?void?visit(void);?? ?? ?? CCRect?boundingBox(void);??
4.CCNodeRGBA
CCNodeRGBA繼承于CCNode,所以它擁有CCNode的所有特性,并且它也繼承于CCRGBAProtocol。從名字看來(lái)我們就知道它是一個(gè)帶有顏色和透明度的節(jié)點(diǎn)。
所以它比起CCNode就多了2個(gè)特性,Opacity和RGB值。
如果要給子節(jié)點(diǎn)傳遞透明度屬性,那么需要設(shè)置setCascadeOpacityEnabled(true),如果傳遞的過(guò)程中遇到了CCNode,那么傳遞會(huì)中斷。顏色值的傳遞也是一樣的道理。
總結(jié)
以上是生活随笔為你收集整理的【玩转cocos2d-x之六】节点类CCNode的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。