Scene:
在應(yīng)用程序中,scene是相對(duì)獨(dú)立的一塊,在很多其他的引擎中,也把它稱之為“畫布”或者“舞臺(tái)”。
在cocos2d-x中,一個(gè)應(yīng)用可以有多個(gè)scene,但任何時(shí)刻只能有一個(gè)是acitve的。一個(gè)CCScene由多個(gè)CCNode組成,一般是包含若干個(gè)CCLayer,而CCLayer又包含多個(gè)CCSprite。需要注意的是,CCScene,CCLayer和CCSprite都繼承了CCNode,只不過后者還有其他的父類,使用多繼承進(jìn)行實(shí)現(xiàn)??梢缘弥猚ocos2d-x的可視化數(shù)據(jù)組織就是一棵場(chǎng)景樹,只不過其中的有些中間節(jié)點(diǎn)被賦予了額外的邏輯(比如CCScene和CClayer)
由于Scene是CCNode的子類,所以可以進(jìn)行手動(dòng)或者使用Actions進(jìn)行變換。
有一族特殊的scene叫CCTransitionScene,從CCScene派生而來,可以實(shí)現(xiàn)場(chǎng)景切換特效,比如褪色,翻頁等效果。
Director:
Director是一個(gè)共享的單例對(duì)象,用來控制場(chǎng)景Scene之間的切換。Director知道當(dāng)前Active的Scene??梢酝ㄟ^Director在場(chǎng)景棧的棧頂push一個(gè)新的scene來進(jìn)行場(chǎng)景切換。將之前的Scene B壓棧,push Scene A,但并不從內(nèi)存中銷毀Scene B。如果將棧頂Scene A彈出,則會(huì)切換到Scene B,而且狀態(tài)也恢復(fù)到之前壓棧的狀態(tài)。
Director 還負(fù)責(zé)OpenGL ES 的初始化。
Layer:
Layer是一種可以處理觸摸事件的CCNode,可以在代碼中看它除了額外繼承CCNode之外,還繼承了CCTouchDelegate。CCLayer知道如何繪制自己,并且可以半透,讓玩家看到其他的Layer。CCLayer在定義游戲的外觀和行為時(shí)非常有用,所以你應(yīng)該花大量的編碼時(shí)間來開發(fā)自己所需要的CCLayer子類。
CCLayer可以在ccTouchBegan, ccTouchMoved, ccTouchEnded和ccTouchCancelled中處理相應(yīng)的事件,而且在場(chǎng)景中的所有Layer都會(huì)收到這些事件,直到某個(gè)Layer處理了為止。
除了可以開發(fā)自己所需要的CCLayer子類之外,cocos2d-x還提供了幾種實(shí)現(xiàn)好的Layer,比如CCMenu,CCColorLayer和CCLayerMultiplex等。
CCLayer可以包含任何CCNode的子類,包括CCSprite,CCLabels乃至其他的CCLayer子類。CCLayer也可以手動(dòng)或者使用Actions進(jìn)行變換。
以下是使用一種漸變Layer的示例:
1 CCLayerGradient* layer1 = CCLayerGradient::create(ccc4(255, 0, 0, 255), ccc4(255, 0, 255, 255));
2 layer1->setContentSize(CCSizeMake(80, 80));
3 layer1->setPosition(ccp(50,50));
4 addChild(layer1);
5
6 CCLayerGradient* layer2 = CCLayerGradient::create(ccc4(0, 0, 0, 127), ccc4(255, 255, 255, 127));
7 layer2->setContentSize(CCSizeMake(80,80));
8 layer2->setPosition(ccp(100,90));
9 addChild(layer2);
10
11 CCLayerGradient* layer3 =CCLayerGradient::create();
12 layer3->setContentSize(CCSizeMake(80, 80));
13 layer3->setPosition(ccp(150,140));
14layer3->setStartColor(ccc3(255, 0, 0));
15 layer3->setEndColor(ccc3(255, 0, 255));
16 layer3->setStartOpacity(255);
17layer3->setEndOpacity(255);
18 ccBlendFunc blend;
19 blend.src = GL_SRC_ALPHA;
20 blend.dst = GL_ONE_MINUS_SRC_ALPHA;
21 layer3->setBlendFunc(blend);
22 addChild(layer3);
Sprite:
Sprite的概念和其他的2D引擎是差不多的,就是一個(gè)2D的圖像,可以旋轉(zhuǎn)平移縮放。
Sprite可以包含其他的Sprite作為子節(jié)點(diǎn),當(dāng)父節(jié)點(diǎn)被變換時(shí),子節(jié)點(diǎn)會(huì)一起被變換。
Sprite可以手動(dòng)或者使用Actions進(jìn)行變換。
希望能為需要的朋友解決問題,
如果還不能解決可以聯(lián)系QQ897703027,email: hongjiandao@163.com
歡迎大家交流cocos2d-x,C++等各方面的知識(shí),或者創(chuàng)業(yè)團(tuán)隊(duì)求收留,本人目前在做cocos2dx網(wǎng)游
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。