Cocos2d學習筆記基本對象
Cocos2d學習筆記基本對象是本文要介紹的內容,文章記錄了Cocos2d點點滴滴,感謝知易的cocos2d教程,在拜讀他的教程時將一些要點記錄下來,以便隨時查閱。來看詳細內容。
1.場景 (CCScene):構成整個游戲的流程的畫面就是我們所說的場景
不同的場景都提供不同的操作,大致可以分為以下幾類場景:
展示類場景:播放視頻或簡單的在圖像上輸出文字,來實現(xiàn)游戲的開場介紹、 勝利、失敗提示、幫助簡介。
選項類場景:主菜單、設置游戲參數(shù)等。
游戲場景:這是游戲的主要內容,除了這個場景之外的其他類場景基本上都是通用架構實現(xiàn)的。
每個場景都是通過不同的層(Layer)的疊加和組合協(xié)作來實現(xiàn)不同的功能的。因此,通常每個場景都是有一個或者幾個層組成的。
2.層(CCLayer)
層是我們寫游戲的重點,大約 99%以上的時間是在層上實現(xiàn)游戲的內容。
層的疊加是有順序的,比如:編號為 1 的圖像背景局在最下面,2 號中間,3 號最 上面。處于最上面的層不透明的內容將覆蓋下面層的內容。
這個次序同樣用于編程模型中的事件響應機制。即編號 3 的層***接收到系統(tǒng)事件(手指單擊屏幕事件),然后是編號 2,***編號 1。在事件的傳遞過程中,如果有一個層處理 了該事件,則排在后面的層將不再接收到該事件。
我們可以簡單的把層理解為在微軟 Windows 編程中的窗口(hWnd 或者 WinForm,還有 Delphi 中的 TForm)。
每一層又可以包含很多各式各樣的內容要素:文本(Label)、鏈接(HTMLLabel)、精靈(Sprite)、地圖等等。其中,精靈是重點。
Layer 的主要功能在于:
1)接收 iPhone 上的屏幕觸摸(touch)操作輸入。
2) 接收動力感知(Accelerometer)輸入。
除此之外,layer 對象本身并沒有提供更多的功能。
Cocos2D為了便于大家使用,直接提供了以下 3 個局:
ColorLayer 顏色層:這是一個透明的、可以按照 RGB 設置填充顏色的層。可以通過 setContentSize 設置層大小,改變顏色塊的尺寸。層也支持動作,可以閃爍,漸變。
Menu 菜單層:這是一個以 Menu 對象為集合類,MenuItem 類實例組成各式各樣按鈕的菜單管理選擇畫面層。(注意:該層中的實例必須是 MenuItem 類或者子類的實例)。Menu 類提供的方法主要都是用來按照橫向、豎向或者多行列排序展示 MenuItem 類實例的。
為了實現(xiàn)不同的按鈕效果,系統(tǒng)提供多種類型 MenuItem。每個按鈕都有三個基本狀態(tài):正常、選種、禁止。
3.精靈(CCSprite)
精靈是整個游戲開發(fā)處理的主要對象。
從技術上講,精靈就是一個可以不斷變化的圖片。返些變化包括:
位置移動
旋轉(以自身幾何中心或以某個屏幕坐標為軸)
放大縮小
運動(按一定時間間隔連續(xù)顯示一系列圖像,形成運動效果)
所謂游戲,就是玩家操作一個或多個人工控制的精靈與一個或者若干個系統(tǒng)控制的敵方精靈進行互動:緊身肉搏、遠程射擊、貼近對話等等。
4.導演 (CCDirector)
按照面向對象的設計原則和反向依賴原則:精靈不應該依賴層、層不應該依賴場景、場景不應該依賴整個流程。導演對象就是整個流程的代表,他負責游戲全過程的場景切換。
導演通常只有一個,因此返個對象是單例(singleton)。Cocos2D框架已經預定義了該實例,不需創(chuàng)建,我們直接使用就可以。
導演對象接受層對象/場景的要求,按照預先設計好的流程來終止、壓棧、激活當前場景,引導下一個場景。
需要特別說明的是:任何時間,只有一個 Scene 對象實例處于運行激活狀態(tài)。該對象可以作為當前游戲內容的對象的整體包容對象,對于 Menu(菜單對象,繼承 Layer 對象), 通常屬亍當前場景的主局。以上就是一個游戲的主要整體對象架構。
CCDirector對象的作用類似于我們在微軟 Windows 編程中的主窗口對象(不同之處在于該對象并不可見),它負責創(chuàng)建、管理應用程序/游戲的主窗口,在特定的條件下顯示執(zhí)行某個場景(Windows 編程中的某個視圖-View)
5.schedule
在游戲設計時,我們需要丌斷的改變屏幕顯示來反映游戲操作的效果,最簡單的就 是提示用戶已經運行的游戲時間。為此,我們需要使用 Cocos2D 的內置 任務調度機制,即 CocosNode 的方法:schedule。
schedule 的作用類似計時器,按照指定的時間間隔不斷調用某個指定的回調凼數(shù)。
小結:Cocos2d學習筆記基本對象的內容介紹完了,希望本文對你有所幫助!