Cocos2D研究院之初識Cocos2d(二)

2021-06-16 21:34:34 字數 2486 閱讀 9411

在正式介紹cocos2d之前,我先囉嗦一下本人對這套引擎的看法。我認為coos2d最大的作用就是降低開發成本(貌似所有引擎都是這樣= =),對於研發部門來說,最大的成本就是時間,所以節省時間是降低成本最有效的方式,cocos2d幾乎封裝了所有開發ios遊戲需要的底層**,使剛剛接觸oc的開發者也能很快的製作出效果不錯的遊戲。可以這樣說,只要你掌握了oc的基本語法以及foundation框架的常用api,就可以用cocos2d開發遊戲了,因為很多東西它都幫你完成了,不需要你花過多的精力去學習api的使用。同時cocos2d還是完全免費的,這一點使它在ios平台上的實用性超過了unity3d,unity3d雖然功能強大,但絕對稱得上是「燒錢神器」。

**目錄的結構如下圖所示:

最上面的幾個是開發者自己編寫的類,當然圖中是乙個新建的專案,所有類都是引擎自動寫好的。resources目錄用來存放資源,libs中是cocos2d的源**,supporting files中是入口函式(main)。

libs路徑結構,其中cocos2d的邏輯**都存放在cocos2d路徑中(已用紅框標記)。

supporting files路徑,入口類就放在這裡(實際開發中基本不需要過問)。

frameworks路徑,其中最常用的就是foundation.framework了。

讀者們可能已經發現,cocos2d的原始碼是開放的,這有利於我們研究它的內部結構,從而加深理解,但作者建議不要去修改源**,因為cocos2d是乙個標準,是完全公開的,就是說所有cocos2d專案中的libs應該是完全一致的,如果修改了,引擎就會失去相容性,在這個專案能夠正常執行的**到了另乙個專案就會報錯,如果api是這種效果的話,我想任何乙個開發者都會抓狂吧(j2me就是乙個很好的例子,由於硬體和api實現方法的差異,導致相同的**在不同的手機上差異性很大),所以我們在開發時最好把它看成乙個sdk,只要使用它的api就好。

好吧,貌似又說了一堆和引擎的研究無關的東西,接下來我真的要將引擎的實際應用了= =(其實作者之所以在一開始說這麼多,並不是想湊字數,而是因為這些才是對開發者來說最重要的,如果乙個程式設計師連基本的開發規範都不知道,那他即使有再好的引擎,甚至精通各種語言,也絕不可能寫出高質量的**,理由很簡單,南轅北轍只會使你離目的地越來越遠,但如果方向正確,即使是烏龜也有超過兔子的可能)

在作者看來,cocos2d中最常用的類可以大致分為兩部分——實體類和行為類,所謂實體類就是非常容易具體化,我們能夠直觀的感受到的東西,比如桌子、、人,這些是現實中實際存在的,實體類可以說就是對這些東西的模擬,當然也有稍微抽象一些的,比如選單、按鈕,但不管怎麼說我們都很好理解它們的存在;行為類相比之下就顯得很抽象了,它們封裝的主體並不是某一事物(或者說是屬性),而是方法,就是該類的例項表示的是實體類的一種行為模式,不同的行為模式需要不同的類來封裝。從語文的角度講,實體類就是主語(誰),行為類就是謂語(做什麼),根據作者的開發經驗,cocos2d大部分時間都是在圍繞這兩者工作。

cocos2d中的類採用的是樹狀繼承的方式,即最上層的基類只有幾個,拓展功能都是通過一層層的繼承父類來實現的,這樣做便於類於類之間的協作,因為很多介面都是共通的(都來自於基類)。實體類的基類是ccnode(cocos2d的所有類都以cc開頭,這就表示你完全可以54它的存在= =b),它是所有實體類的父類,它內部封裝的引數與方法是整個引擎中出鏡率最高的,可以說是cocos2d的核心(選單、精靈都是繼承自它),下一章節會對它進行詳細介紹。

行為類則大部分繼承自ccation,它的子類例項可以讓乙個ccnode物件執行乙個行為,比如旋轉、移動,甚至是自定義的行為,乙個ccnode可以同時執行多個行為或是按順序執行乙個行為序列,有了這些類,開發者就可以在遊戲中輕鬆加入各種華麗的效果了。

有了ccnode和ccaction,我們是不是就可以開發遊戲了呢?還不行,我們還需要乙個乘納它們的舞台。比如我們建立一張,並賦予它乙個移動的行為,但是我們無法看見它,因為我們並沒有把它顯示到螢幕上,而舞台的作用就是把它上面的演員顯示到螢幕上,呈現給觀眾。cocos2d實現舞台的方式是這樣的:

舞台分為三部分:導演–場景–層。首先,螢幕的顯示是以場景為單位的,我們通過顯示器看到的所有內容都在乙個場景中,而層是構成場景的元素,就好比場景是乙個舞台,我們通過它**遊戲中的世界,而層就是組成舞台的各種背景,比如遠近、近景、字幕。當一段故事講完後,我們可能需要切換到另乙個舞台來講述下一段故事,在戲劇中通常是拉上大幕,在幕後切換背景,然後再拉開大幕,在cocos2d中也是這個步驟,而完成這一工作的就是導演。導演類負責場景間的切換,場景負責將遊戲中的元素呈現給玩家,而層負責容納元素以及接收玩家的輸入資訊。

通過這些類的合作,我們就可以進入自己創造的遊戲世界了~

Cocos2D研究院之初識Cocos2d(二)

在正式介紹cocos2d之前,我先囉嗦一下本人對這套引擎的看法。我認為coos2d最大的作用就是降低開發成本 貌似所有引擎都是這樣 對於研發部門來說,最大的成本就是時間,所以節省時間是降低成本最有效的方式,cocos2d幾乎封裝了所有開發ios遊戲需要的底層 使剛剛接觸oc的開發者也能很快的製作出效...

cocos2d實現語音 Cocos2d 聲音API

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

cocos2d筆記 cocos2d的單例模式

cocos2d充分使用了單例設計模式,這裡有必要提及它是因為它是經常是討論熱點。大體上說,乙個singleton是乙個類,它在應用使用期中僅僅例項化一次。為了確保如此,就要使用乙個既建立又訪問此物件例項的靜態方法。因此,你不使用alloc init或者靜態自動釋放初始化器 static autore...