Cocos2d中幾種常用類簡介

2021-06-18 19:31:03 字數 3074 閱讀 5488

cocos2d中幾種常用類簡介

傷心的小果凍

the director(導演)

ccdirector類,簡稱director(導演),是cocos2d遊戲引擎的核心

。director是乙個單例:它儲存著 cocos2d的全域性配置設定,同時管理著cocos2d的場景。

director的主要用處如下:

1. 訪問和改變場景

2. 訪問cocos2d的配置細節

3. 訪問檢視(opengl,uiview,uiwindow) 4. 暫停,恢復和結束遊戲

5. 在uikit和opengl之間轉換座標

實際上存在四種型別的director。它們在細節上有所不同。最常用的director 是ccdisplaylinkdirector,它的內部使用了蘋果的cadisplaylink類。它是最好的選擇,但是只有在ios 3.1以上的版本中才能使用。其次,你可以使用 ccfastdirector。如果你想讓cocoa touch檢視和cocos2d一同工作,你必須轉 到ccthreadedfastdirector,因為只有這個director才能完全支援。 ccthreadedfastdirector不好的一面是:使用它會很耗電。最後的選擇是 cctimerdirector,但這是沒有辦法的選擇,因為它是四種director裡面最慢的。

場景圖(the scene graph)

有時候又被稱為「場景層級」。場景圖是由所有目前活躍的cocos2d節點所組成

的乙個層級圖。除了場景本身,每乙個節點只有乙個父節點,但是可以有任意 數量的子節點。

當你將節點新增到其它節點中時,你就在構建乙個節點場景圖。圖3-1描繪了一 個虛構的遊戲場景圖。在最上面,你總是放置場景節點(myscene),通常跟著的 是乙個層節點(mylayer)。在cocos2d裡,層節點的作用是接收觸控和加速計的輸入。

圖3-1.

乙個簡化的由多個不同節點組成的cocos2d場景圖。場景圖中有乙個玩家節點和他的**節點,遊戲的得分,和遊戲中用於暫停和改變遊戲選項的選單。

在cclayer下一層的是你遊戲的組成要素,它們大多數是精靈(sprite)節點。 它們包括用於顯示遊戲得分的標籤節點,用於顯示遊戲內選單的選單和選單專案節點,玩家用這些選單來暫停遊戲或者回去主選單。

在圖3-1中你會注意到playersprite節點中有個子節點playerweaponsprite。換句說,playerweaponsprite是附加在playersprite上的。如果playersprite 移動,旋轉或放大縮小,playerweaponsprite將會跟著做同樣的事情而不需要 額外的**。這就是場景圖的強大之處:你對乙個節點施加的影響將會影響到它的所有子節點。但是有時候這也會產生混淆,因為像位置和旋轉都是相對于父節點來說的。

ccnode類的層級

.所有節點都有乙個共同的父類:ccnode。它定義了許多除顯示節點外的通用的

屬性和方法。圖3-2展示了繼承自ccnode的一些最重要的類。這些類是你最常用 到的。其實即使你只用這些類,你也可以創造出很有意思的遊戲。

圖3-2. ccnode是cocos2d中最重要的類。所有類都繼承自ccnode。ccnode定義了通用的屬性和 方法。

ccnode

ccnode是所有節點的基類。它是乙個抽象類,沒有視覺表現。它定義了所有節 點都通用的屬性和方法。

使用節點

ccnode類實現了所有新增,獲取和刪除子節點的方法。以下是一些處理子節點 的方法:

生成乙個新的節點 :

ccnode* childnode = [ccnode node];

將新節點新增為子節點:

[mynode addchild:childnode z:0 tag:123];

獲取子節點:

ccnode* retrievednode = [mynode getchildbytag:123];

通過tag刪除子節點;cleanup會停止任何執行中的動作: [mynode removechildbytag:123 cleanup:yes];

通過節點指標刪除節點:

[mynode removechild:retrievednode];

刪除乙個節點的所有子節點:

[mynode removeallchildrenwithcleanup:yes];

從mynode的父節點刪除mynode:

[mynode removefromparentandcleanup:yes];

addchild中的z引數決定了節點的繪製順序。擁有最小z值的節點會首先被繪製; 擁有最大z值的節點最後乙個被繪製。如果多個節點擁有相同的z值,他們的繪 制順序將由他們的新增順序來決定。當然,這個規則只適用於像sprites那樣有 視覺表現的節點。

tag引數允許你通過getchildbytag方法來獲取指定的節點。

注:如果有多個節點擁有相同的tag數值,getchildbytag將把找到的第乙個節

點返回。其它節點將不能夠再被訪問。所以你要確保為你的節點指定獨有的tag

數值。動作(actions)也有tag。不過,節點和動作的tag不會衝突,所以擁有相同

tag數值的動作和節點可以和平共處。

使用動作(actions)

節點可以執行動作。我會在以後多講一些動作相關的知識。現在你只要知道動 作可以讓節點移動,旋轉和縮放,還可以讓節點做一些其它的事情。

以下是乙個動作的宣告:

ccaction* action = [ccblink actionwithduration:10 blinks:20]; action.tag = 234;

執行這個動作會讓節點閃爍: [mynode runaction:action];

如果你想在以後使用此動作,你可以用tag獲取:

ccaction* retrievedaction = [mynode getactionbytag:234];

你可以用tag停止相關聯的動作: [mynode stopactionbytag:234];

或者你也可以用動作指標停止動作: [mynode stopaction:action];

你可以停止所有在此節點上執行的動作: [mynode stopallactions]; 

cocos2d實現語音 Cocos2d 聲音API

param url 聲音路徑 cc.audioengine.playmusic url loop 停止背景 param releasedata 是否釋放聲音資料,預設為false cc.audioengine.stopmusic releasedata 暫停背景 cc.audioengine.pau...

cocos 2d中CCUserDefault的使用

cocos 2d中的ccuserdefault的使用非常簡單,網上有一位大神 已經把這個類全部都注釋了,一目了然。非常感謝!下面介紹下這個類的傻瓜用法 1.在需要使用的類中的引入標頭檔案 include support ccuserdefault.h include stdio.h include ...

iphone開發之Cocos 2D簡介

寫這個東西其實不是介紹如何用cocos 2d開發,只是介紹性的入門知識,這個東西不是一篇文章就可以搞清楚,都是需要自己去不懈的努力學習。相關的網頁 是乙個開源框架,利用它可以非常容易的在 iphone 上開發2d 遊戲。它提供了物理,精靈 sprites 時差卷軸 parallax scrollin...