Scene :場景
瞭解了Director 以後,接下來介紹 Scene 這個與它緊密相關的遊戲組件。
經過以前的學習,咱們已經瞭解了場景以及它在流程控制中的地位。
在 Cocos2d-x 中,Scene 定義了一個場景。場景僅僅是層的容器。包括了所有需要顯示的遊戲元素。
所以相對於其它遊戲元素,Scene 並無提供什麼特別的功能,就是一個十分簡單的類。
除了做爲層的容器,場景的還有一個
做用就是流程控制。
利用 Director::replaceScene 等方法,咱們可以使遊戲在不一樣的場景中自由切換。
遊戲開發過程當中。當咱們需要完畢一個場景時。會建立一個 Scene 的子類,並在子類中實現咱們需要的功能。
好比,咱們可以在子類的初始化方法中加載遊戲資源,爲場景加入層。啓動音樂播放,等等。
同一時候,場景之間可能也會需要必定的過渡銜接效果,不然,場景的切換會顯得十分突兀。
Cocos2d-x 提供了很是多華麗的場景切換特效。好比翻頁、波浪、淡出淡入等。
這些特效是經過派生自 Scene 的 TransitionScene 系列特效類來實現的。
TransitionScene。這個scene是用來在兩個scene切換的時候。作中間的過渡變化的一個scene。
頭文件在cocos\2d\CCTransition.h中;
固然,你也可以模仿 Cocos2d-x 內置的場景切換特效代碼,來編寫屬於本身的特效。
Layer :層
Layer 定義了一個層。與 Scene 相似,層也扮演着容器的角色。學習
然而與場景不一樣的是,層一般包括的是直接呈現在屏幕
上的詳細內容:
咱們需要在層中放入精靈、文本標籤或其它遊戲元素;
設置遊戲元素的屬性。如位置、方向和大小;
設置
遊戲元素的動做等。
因而可知。遊戲開發的大部分編碼時間都用在建立層上。
一般,層中的對象功能相似。耦合較緊,與
層中游戲內容相關的邏輯代碼也編寫在層內。
在組織好層後,僅僅需要把層依照順序加入到場景中就可以顯示出來了。
要向場景中加入層,咱們可以使用 addChild 方法。
addChild 方法共同擁有三個定義,詳細例如如下所看到的:
void addChild(Node* child); //Adds a child to the container with z-order as 0.
void addChild(Node* child, int localZOrder);
void addChild(Node* child, int localZOrder, int tag);
當中 child 參數爲將要加入的節點。
對於場景而言,一般咱們加入的節點就是層。先加入的層會被置於後加入的層之下。this
假設想要爲它們指定前後次序。可以使用不一樣的 localZOrder值,localZOrder表明了該節點下元素的前後次序。值越大則顯示順序越
靠上。localZOrder的默認值爲 0。編碼
tag 是元素的標識號碼,假設爲子節點設置了 tag 值,就可以在它的父節點中利用 tag 值找到
它了。
這裏咱們可以選擇本身需要的方法來向場景中加入層。
在以前的文章中提到的找小三遊戲場景的構成中,找小三遊戲的場景大體由背景層(backgroundLayer)、動做層
(actionLayer)、觸摸層(touchLayer)和菜單層(menuLayer)組成。
若是這些層已經完畢,那麼咱們最後要作的就是
在遊戲場景的初始化方法中把它們加入到場景中:
this->addChild(backgroundLayer, 0);
this->addChild(actionLayer, 100);
this->addChild(touchLayer,200);
this->addChild(menuLayer, 300);
Layer 的還有一個十分重要的功能是可以接受用戶輸入事件。包含觸摸、加速度計和鍵盤輸入等。
在cocos2d-x 3.0曾經版本號,層與用戶輸入事件相關的成員如表所看到的。
而在3.0版本號中。採用了事件分發的機制:
(1)在使用時,首先建立一個事件監聽器。事件監聽器包括下面幾種:
觸摸事件(EventListenerTouch)spa
鍵盤響應事件(EventListenerKeyboard).net
加速記錄事件(EventListenerAcceleration)設計
鼠標對應事件(EventListenerMouse)code
本身定義事件(EventListenerCustom)orm
(2)以上事件監聽器統一由_eventDispatcher來進行管理。它的工做需要三部分組成:
事件分發器 EventDispatcher對象
事件類型 EventTouch, EventKeyboard 等blog
事件監聽器 EventListenerTouch, EventListenerKeyboard 等
(3)監聽器實現了各類觸發後的邏輯,在適當時候由事件分發器分發事件類型,而後調用對應類型的監聽器
郝萌主友情提示:
學會了所有的遊戲組件。就可以搭積木式的完畢一個遊戲了、、、