Quick Cocos2d x初學者遊戲教程(三)

2021-06-28 21:26:10 字數 4452 閱讀 9561

本章我們繼續解析新建專案的**檔案,銜接不上的童鞋可以先回顧下上章的內容。那麼下面我們就言簡意賅直接進入正題吧!

開啟 main.lua 檔案,其內容如下所示:

1

2

3

4

5

6

7

8

9

10

function __g__trackback__(errormessage)

print("----------------------------------------")

print("lua error: ".. tostring(errormessage) .."\n")

print(debug.traceback("", 2))

print("----------------------------------------")

end

package.path = package.path ..";src/"

cc.fileutils:getinstance():setpopupnotify(false)

require().new():run()

require 方法表示引入乙個檔案,使用 require 方法載入檔案的過程會檢查檔案的 lua 語法,同時會完成被載入檔案內部變數的初始化。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

-- 1

require("config")

require("cocos.init")

require("framework.init")

-- 2

class(

-- 3

end

-- 4

cc.fileutils:getinstance():addsearchpath("res/")

cc.director:getinstance():setcontentscalefactor( 640/config_screen_height )

self:enterscene("mainscene")

end

return

我們依次來看以上各**行的含義:

使用 require 方法載入配置、cocos 以及 quick 框架。這些是每個 quick 程式都必須要載入的。

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

local mainscene =class("mainscene", function()

returndisplay.newscene("mainscene")

end)

function mainscene:ctor()

cc.ui.uilabel.new()

:align(display.center, display.cx, display.cy)

:addto(self)

end

function mainscene:onenter()

end

function mainscene:onexit()

end

returnmainscene

這是因為 scene 場景物件必須是乙個 c++ 的物件,而 c++ 的物件是無法直接派生出 lua 的類的,所以我們只有用乙個函式把它建立出來,然後再為它新增相應的方法。

在建立場景的函式段裡,display.newscene()方法將建立了乙個新場景,並返回該 scene 場景物件。

這裡的 display 是乙個重要的概念,在 quick 中,display 模組封裝了絕大部分與顯示有關的功能,並負責根據 config.lua 中定義的解析度設定計算螢幕的設計解析度。display 模組提供了眾多的方法和屬性,比如建立層(display.newlayer),建立精靈(display.newsprite),以及恢復暫停切換場景等等。

總而言之,display 是個很值得我們細細探索的模組。關於它更多詳情內容可參見quick-cocos2d-x的api文件。

下面我們例舉一些 display 常用的屬性:

結合 display 模組提供的常量,我們可以很方便的獲取螢幕的某些與現實相關的屬性,如位置和顏色等等。display 模組中關於位置的常量是初始化的時候程式就已經計算好的(不信你可以檢視控制台視窗中的列印資訊),它們根據解析度的不同而不同。 

mainscene 的 ctor 函式中預設新增了乙個 ui 標籤,這個標籤的作用是在螢幕正中間新增乙個「hello world」的文字,並顯示到螢幕上。

其中 cc.ui 模組中封裝了大量符合指令碼風格的 cocos2d-x 控制項,包含 uilabel、uiimage、uislider 等等。所以正如上述**一樣,我們可以通過呼叫cc.ui.uilabel.new()來例項化乙個新的 uilabel 控制項。其先有引數分別表示:

建立好 uilabel 後,通過呼叫 align 方法設定文字的錨點和顯示位置。最後用 addto 方法把文字新增到場景中。

至於 mainscene 的 onenter 和 onexit 兩個方法,清楚 cocos2d-x 原理的的童鞋應該很容易理解。其中onenter 方法是在進入場景的時候呼叫的,我們可以在這裡做一些初始化的工作;而 onexit 方法是在退出場景的時候呼叫的,在這裡我們可以釋放資源,重置變數。

到現在為止,我們就已經解析完 src 目錄下所有的 lua 檔案了,總的來說,這兩章所解析的 lua 檔案的關係和用途如下圖所示: 

好了,上圖把這兩章講解的廢話都概括完了,我想應該夠清楚明了的吧!! o(∩_∩)o~,從下章開始,我們將正式開始類el遊戲的開發。

QUICK COCOS2DX建立新專案

建立新專案之前,確保已經正確設定了quick cocos2dx root環境變數 啟動 終端 應用程式,然後進入需要放置新專案的目錄 cd desktop執行create project.sh命令,並指定專案的 package name quick cocos2dx root bin create ...

quick cocos2d x的Image使用方法

image的使用方法相對簡單。quick cocos2d x中可以指定該image是否使用9宮圖來進行渲染。不使用9宮格的image建立 local img cc.ui.uiimage.new test.png 使用9宮格的image建立 local img cc.ui.uiimage.new te...

Quick Cocos2d x 觸控機制詳解

cocos2d x 原本的觸控機制存在一些限制,在使用中需要開發者做不少額外的處理。而且 cocos2d x 的觸控事件是按照目標的優先順序來分派的,而不是按照目標的顯示層級來分派。針對這個問題,quick cocos2d x 提出了自己的一套觸控機制。本文詳細介紹了這套新機制的實現原理和用法。以下...