quick-cocos2d-x遊戲開發【2】——項目結構分析、創建新場景

創建完一個新項目之後,我們可以簡單的看一看這個項目的文件組成,有這麼一個文件層次結構


幾個proj.*文件夾就不用說了,是對應的平臺的解決方案,res專門存放我們的遊戲資源,scripts存放我們的lua代碼,sources中有我們熟悉的AppDelegate類,我們主要常用的就兩個文件夾,res和scripts(我這不是廢話嗎)


好吧,還是再打開scripts文件夾看下,

該文件下有main.lua,它是程序lua腳本的啓動文件

function __G__TRACKBACK__(errorMessage)
    print("----------------------------------------")
    print("LUA ERROR: " .. tostring(errorMessage) .. "\n")
    print(debug.traceback("", 2))
    print("----------------------------------------")
end

require("app.MyApp").new():run()  --啓動後執行MyApp腳本


啓動後,執行MyApp腳本,並且調用run函數

require("config")
require("framework.init")

local MyApp = class("MyApp", cc.mvc.AppBase)

function MyApp:ctor()
    MyApp.super.ctor(self)
end

function MyApp:run()
    CCFileUtils:sharedFileUtils():addSearchPath("res/")
    self:enterScene("MainScene")
end

return MyApp

在run函數中,首先設置了文件資源的搜索路徑,設置爲res文件夾,接着進入第一個場景,也是腳本給我提供的MainScene.lua,在進入遊戲畫面前,程序還會初始化一些事情,可以看到第一行代碼引入了config.lua,我們可以再接着打開config.lua文件

-- 0 - 不輸出任何調試信息, 1 - 輸出基本的調試信息, 2 - 輸出詳細的調試信息
DEBUG = 1

-- 設置是否在畫面中顯示渲染幀率等信息
DEBUG_FPS = true

-- 設置是否輸出內存佔用信息,true爲每10秒一次
DEBUG_MEM = false

-- 是否載入過時的 API 定義
LOAD_DEPRECATED_API = false

-- 是否載入短代碼API
LOAD_SHORTCODES_API = true

-- 屏幕方向
CONFIG_SCREEN_ORIENTATION = "landscape"

-- 設計分辨率大小
CONFIG_SCREEN_WIDTH  = 960
CONFIG_SCREEN_HEIGHT = 640

-- 自動縮放模式
CONFIG_SCREEN_AUTOSCALE = "FIXED_WIDTH"

這裏主要配置一下游戲的debug信息,FPS顯示,屏幕方向,設計屏幕大小,以及適屏方案

有了這些的初始化,就會進入第一個場景了,再看下MainScene.lua

local MainScene = class("MainScene", function()
    return display.newScene("MainScene")
end)

function MainScene:ctor()
    ui.newTTFLabel({text = "Hello, World", size = 64, align = ui.TEXT_ALIGN_CENTER})
        :pos(display.cx, display.cy)
        :addTo(self)
end

function MainScene:onEnter()
end

function MainScene:onExit()
end

return MainScene

MainScene的ctor是構造函數,一旦我們new一個對象實例時就會調用ctor,所以它是必須有的,這裏面主要做一些場景的界面佈局等等,在MainScene中引擎只畫了一個文本在上面,就是上節中看到的Hello World。


在quick中,它弱化了層的地位,反而增強了場景的地位,我們在cocos2d-x中一般都是新建一個layer,遊戲中的元素添加到這個layer中,而在quick中,往往我們爲了簡單些,會直接就添加到scene上。所以你會在samples中看到基本都是加在scene上。


好了,說了這麼多,下面我們動手創建一個場景

在scenes文件夾中新建一個MyScene,仿照着MainScene.lua,我們敲點代碼,

local MyScene = class("MyScene", function ()
	return display.newScene("myscene")
end)

function MyScene:ctor()
	
end

return MyScene

這樣就算新建了一個場景,咱們還是添加點溫馨的畫面吧,顯示一下cocos2d-x經典的畫面,在後面的筆記着再來解釋添加精靈文本這些。

在原來的Cocos2d-x項目中把那張HelloWorld.png圖片複製一份到res文件夾下。

完整代碼如下,

local MyScene = class("MyScene", function ()
	return display.newScene("myscene")
end)

function MyScene:ctor()
	display.newSprite("HelloWorld.png", display.cx, display.cy):addTo(self)

	ui.newTTFLabel({text = "Hello, World", align = ui.TEXT_ALIGN_CENTER, x = display.cx, y = display.height*0.9}):addTo(self)
end

return MyScene

然後我們修改啓動的第一個場景,在MyApp.lua中,修改self:enterScene("myscene"),記住這其中的字符串是之前創建的那個場景時填寫的字符串,如果不一致會找不到該場景的。最後我們用player模擬器跑一下看下效果。



哈哈,夠經典,夠溫馨吧,只是按鈕沒加,後面再說。大家也趕緊來試試吧。

如有錯誤之處,還請批評指出。

發佈了57 篇原創文章 · 獲贊 112 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章