1. 程式人生 > >quick-cocos2d-x遊戲開發【2】——項目結構分析、創建新場景

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

fileutil 遊戲 log world plain ack 設計 avi sca

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

技術分享

幾個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模擬器跑一下看下效果。

技術分享


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

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

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