您好,登錄后才能下訂單哦!
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,只不過(guò)后者還有其他的父類,使用多繼承進(jìn)行實(shí)現(xiàn)??梢缘弥猚ocos2d-x的可視化數(shù)據(jù)組織就是一棵場(chǎng)景樹(shù),只不過(guò)其中的有些中間節(jié)點(diǎn)被賦予了額外的邏輯(比如CCScene和CClayer)
由于Scene是CCNode的子類,所以可以進(jìn)行手動(dòng)或者使用Actions進(jìn)行變換。
有一族特殊的scene叫CCTransitionScene,從CCScene派生而來(lái),可以實(shí)現(xiàn)場(chǎng)景切換特效,比如褪色,翻頁(yè)等效果。
Director:
Director是一個(gè)共享的單例對(duì)象,用來(lái)控制場(chǎng)景Scene之間的切換。Director知道當(dāng)前Active的Scene??梢酝ㄟ^(guò)Director在場(chǎng)景棧的棧頂push一個(gè)新的scene來(lái)進(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í)間來(lái)開(kāi)發(fā)自己所需要的CCLayer子類。
CCLayer可以在ccTouchBegan, ccTouchMoved, ccTouchEnded和ccTouchCancelled中處理相應(yīng)的事件,而且在場(chǎng)景中的所有Layer都會(huì)收到這些事件,直到某個(gè)Layer處理了為止。
除了可以開(kāi)發(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)行變換。
希望能為需要的朋友解決問(wèn)題,
如果還不能解決可以聯(lián)系QQ897703027,email: hongjiandao@163.com
歡迎大家交流cocos2d-x,C++等各方面的知識(shí),或者創(chuàng)業(yè)團(tuán)隊(duì)求收留,本人目前在做cocos2dx網(wǎng)游
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。