cocos2d x 3 0 導演,場景,層,精靈

2022-05-17 22:22:10 字數 2472 閱讀 8897

一款遊戲好比一部電影,只是遊戲具有更強的互動性,不過它們的基本原理是一致的。所以在cocos2dx中把統籌遊戲大局的類抽象為導演(director),director是整個cocos2dx引擎的核心,是整個遊戲的導航儀,遊戲中的一些常用操作就是由director來控制的,比如opengl es的初始化,場景的轉換,遊戲暫停繼續的控制,世界座標和gl座標之間的切換,對節點(遊戲元素)的控制等,還有一些遊戲資料的儲存呼叫,螢幕尺寸的獲取等都要由director類來管理控制的。因為director是遊戲專案的總導演,會經常呼叫進行一些控制,所以該director利用了單件設計模式,也就是專案裡取到的director都是同乙個。

獲得導演類director例項語句

auto director = director :: getinstance();

scene場景也是cocos2dx中必不可少的元素,遊戲中通常我們需要構建不同的場景(至少乙個),遊戲裡關卡、版塊的切換也就是乙個乙個場景的切換,就像在電影中變換舞台和場地一樣。場景的乙個重要的作用就是流程控制的作用,我們可以通過director的一系列方法控制遊戲中不同的場景的自由切換。

下面是director控制場景的常用方法:

layer是處理玩家事件響應的node子類。與場景不同,層通常包含的是直接在螢幕上呈現的內容,並且可以接受使用者的輸入事件,包括觸控,加速度計和鍵盤輸入等。我們需要在層中加入精靈,文字標籤或者其他遊戲元素,並設定遊戲元素的屬性,比如位置,方向和大小;設定遊戲元素的動作等。通常,層中的物件功能類似,耦合較緊,與層中遊戲內容相關的邏輯**也編寫在層中,在組織好層後,只需要把層按照順序新增到場景中就可以顯示出來了。要向場景新增層,我們可以使用addchild方法。

addchild( node child ) addchild( node child, int zorder ) addchild( node *child, int zorder, int tag )

其中,child引數就是節點。對於場景而言,通常我們新增的節點就是層。先新增的層會被置於後新增的層之下。如果需要為它們指定先後次序,可以使用不同的zorder值。tag是元素的標識號碼,如果為子節點設定了tag值,就可以在它的父節點中利用tag值就可以找到它了。層可以包含任何node作為子節點,包括sprites(精靈), labels(標籤),甚至其他的layer物件。

上圖所示的中,叫做helloworldscene的場景中有三個不同層,在layer3層上又有上個不同的精靈。

下面是乙個建立三個不同層的例子:

auto layer = layercolor::create(color4b(0, 128, 128, 255));

layer->setcontentsize(ccsizemake(120, 80));

layer->setposition(point(50, 50));

addchild(layer, 10);

auto layer1 = layercolor::create(color4b(128, 0, 128, 255));

layer1->setcontentsize(ccsizemake(120, 80));

layer1->setposition(point(100, 80));

addchild(layer1, 20);

auto layer2 = layercolor::create(color4b(128, 128, 0, 255));

layer2->setcontentsize(ccsizemake(120, 80));

layer2->setposition(point(150, 110));

addchild(layer2, 30);

cocos2d中的精靈和其他遊戲引擎中的精靈相似,它可以移動,旋轉,縮放,執行動畫,並接受其他轉換。cocos2dx的sprite由texure,frame和animation組成,由openes負責渲染。 簡單過程可描述為:使用texture2d載入,可以用texture2d生成對應的spriteframe(精靈幀),將spriteframe新增到animation生成動畫資料,用animation生成animate(就是最終的動畫動作),最後用sprite執行這個動作。

建立精靈的幾種方式:

在cocos2dx中實現精靈顯示的基本過程如下:

//建立scene

auto scene = scene::create();

//建立層

auto layer = helloworld::create();

//把層加入場景中

scene->addchild(layer);

//建立乙個精靈

auto sprite = sprite::create("helloworld.png");

//把精靈加到層裡

layer->addchild(sprite, 0);

**:

cocos2d x 3 0 場景切換

cocos2d x 3.0中場景切換特效比較多,而且遊戲開發中也經常需要用到這些特效,來使場景切換時不至於那麼干巴,遂這裡彙總一下,開發中使用。場景切換用到導演類directory,大多數用的都是替換場景,當然也可以用出棧進棧的方式來進行場景的替換,這裡以replacescene來舉例。場景切換特效...

cocos2d x 3 0 編譯問題

3.0最主要的問題是它引進了c 11 所有ndk版本必須是r8e版本以上,即使你已經有這些已經準備好,還要注意一點是ndk編譯的時候預設採用ndk toolchain version 4.6的形式去編譯,這個時候就會出現 error thread in namespace std does not ...

cocos2dx 3 0 學習資源

目前看見的cocos2dx 3.0 學習資源 官方的英文 我也在wiki上看了一會,有的還用有道詞典查詢的單詞什麼的。史上最坑爹的遊戲 holdtail 目前資料很少,mac下開發的資源就更少了。如果有朋友看見其他資源可以告訴我啊,謝謝 cocos2dx 3.0基礎知識 cocos2dx 3.0 a...