溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Scene,Director, Layer 和 Sprite

發(fā)布時(shí)間:2020-07-19 07:23:20 來(lái)源:網(wǎng)絡(luò) 閱讀:875 作者:imik 欄目:游戲開(kāi)發(fā)

  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的示例:

CCLayerGradient* layer1 = CCLayerGradient::create(ccc4(25500255), ccc4(2550255255));

 2 layer1->setContentSize(CCSizeMake(8080)); 

3 layer1->setPosition(ccp(50,50)); 

4 addChild(layer1); 

CCLayerGradient* layer2 = CCLayerGradient::create(ccc4(000127), ccc4(255255255127)); 

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(8080));

13 layer3->setPosition(ccp(150,140));

14layer3->setStartColor(ccc3(25500));

15 layer3->setEndColor(ccc3(2550255));

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)游
 

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI