1. 程式人生 > >一、cocos2dx概念簡介

一、cocos2dx概念簡介

1)scene,繼承自CCScene

場景,一個遊戲執行期間的顯示介面,一個應用裡面可以有多個場景,但是每次只能有一個是啟用狀態,也可以理解為一次只能顯示一個介面。

例如,你的遊戲有如下的介面:介紹,選單,等級場景,勝利場景,失敗場景,高分介面。如此多的介面組成了整個遊戲,如下圖所示是一個場景流程圖。


一個CCScene是由一個或者多個CCNode組成,可以將CCNode新增到scene中。CCNode的子類,比如CCLayer和CCSprite,能夠給場景提供外觀和行為。

因為場景是CCNode的一個子類,所以可以通過CCActions製作一些動畫。

2)Director

CCDirector是一個控制器,控制不同場景之間的切換,本身是一個單例。它知道現在哪個場景是活動的並且允許你通過替換當前的場景或者把一個新的場景放到場景棧中來改變場景。當你把一個新場景放到場景棧裡,CCDirector暫停之前的場景,並且把它儲存在記憶體裡,然後顯示新場景。一會之後,如果你把場景棧頂端的場景pop出之後,之前的場景將會恢復其最後的狀態並顯示出來。

CCDirector也負責初始化OpenGL ES。

3)Layers

CCLayer是一個知道如何處理接觸操作的CCNode。Layers知道如何繪製並且可能是半透明的,玩家能夠看到這些Layer之後的東西。CCLayers在定義遊戲的介面和動作是非常重要的,所有在開發中你需要花費大多數時間去寫一些CCLayer的子類來實現你想要的。

CCLayer可以定義觸控回撥,通過繼承一些方法可以處理觸控事件(ccTouchBegan,ccTouchMoved,ccTouchEnded或者ccTouchCancelled)。一個CClayer能夠跟使用者進行互動。這些觸控事件能夠在一個場景中的所有Layer中一層層傳遞下去,直到某個Layer獲取他們並且能夠處理事件,則停止傳遞。


複雜的應用需要你去自定義一些CCLayer的子類,cocos2d提供了幾個預定義的layers。比如CCMenu(一個簡單的選單層),CCColorLayer(一個可以繪製實體顏色的層),CCLayerGradient (一個可以繪製漸變顏色的層),CCLayerMultiplex(一個可以處理多個複雜子層的Layer,能夠一次啟用一個子層,並且與此同時disable其他的層)

Layers可能包含CCNode作為子層,包括CCSprites,CCLabels,並且甚至其他的CCLayer物件。

多層的例子如下:

	CCLayerGradient* layer1 = CCLayerGradient::create(ccc4(255, 0, 0, 255), ccc4(255, 0, 255, 255));
	layer1->setContentSize(CCSizeMake(80, 80));
	layer1->setPosition(ccp(50,50));
    addChild(layer1);

    CCLayerGradient* layer2 = CCLayerGradient::create(ccc4(0, 0, 0, 127), ccc4(255, 255, 255, 127));
    layer2->setContentSize(CCSizeMake(80, 80));
    layer2->setPosition(ccp(100,90));
    addChild(layer2);

    CCLayerGradient* layer3 = CCLayerGradient::create();
    layer3->setContentSize(CCSizeMake(80, 80));
    layer3->setPosition(ccp(150,140));
    layer3->setStartColor(ccc3(255, 0, 0));
    layer3->setEndColor(ccc3(255, 0, 255));
    layer3->setStartOpacity(255);
    layer3->setEndOpacity(255);
    ccBlendFunc blend;
    blend.src = GL_SRC_ALPHA;
    blend.dst = GL_ONE_MINUS_SRC_ALPHA;
    layer3->setBlendFunc(blend);
    addChild(layer3);


4)Sprites精靈

一個cocos2d CCSprite是一個2D的並且能夠移動,旋轉,縮放,實現動畫的圖片元素,

一個CCSprite可以有其他的CCSprite作為子元素。當父節點被轉換,所有的它的子元素也會對應的轉換。