quick-cocos2d-x遊戲開發【2】——項目結構分析、創建新場景
阿新 • • 發佈:2017-06-24
fileutil 遊戲 log world plain ack 設計 avi sca
在run函數中。首先設置了文件資源的搜索路徑。設置為res目錄。接著進入第一個場景,也是腳本給我提供的MainScene.lua,在進入遊戲畫面前,程序還會初始化一些事情,能夠看到第一行代碼引入了config.lua。我們能夠再接著打開config.lua文件
這裏主要配置一下遊戲的debug信息。FPS顯示,屏幕方向。設計屏幕大小。以及適屏方案
MainScene的ctor是構造函數,一旦我們new一個對象實例時就會調用ctor。所以它是必須有的,這裏面主要做一些場景的界面布局等等,在MainScene中引擎僅僅畫了一個文本在上面,就是上節中看到的Hello World。
這樣就算新建了一個場景。咱們還是加入點溫馨的畫面吧,顯示一下cocos2d-x經典的畫面,在後面的筆記著再來解釋加入精靈文本這些。
然後我們改動啟動的第一個場景,在MyApp.lua中。改動self:enterScene("myscene"),記住這當中的字符串是之前創建的那個場景時填寫的字符串。假設不一致會找不到該場景的。最後我們用player模擬器跑一下看下效果。
創建完一個新項目之後,我們能夠簡單的看一看這個項目的文件組成,有這麽一個文件層次結構
幾個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腳本
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】——項目結構分析、創建新場景