1四、Cocos2dx 3.0三,找一個小遊戲開發Scene and Layer:遊戲夢想

發人員的勞動成果,轉載的時候請務必註明出處http://blog.csdn.net/haomengzhu/article/details/30474393

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)監聽器實現了各類觸發後的邏輯,在適當時候由事件分發器分發事件類型,而後調用對應類型的監聽器


郝萌主友情提示:
學會了所有的遊戲組件。就可以搭積木式的完畢一個遊戲了、、、
相關文章
相關標籤/搜索