自己製作一個 CoCos2dx 錯誤資訊框介面
阿新 • • 發佈:2019-01-01
自己製作一個 CoCos2dx 錯誤資訊框介面
在除錯cocos專案的時候對程式碼的錯誤提示,我們通常會在 除錯窗裡面去檢視,但是如果有些不太影響的錯誤可能不易看到,我們可以製作一個 Debug 視窗來捕獲 並顯示在 遊戲裡面,這樣就比較直觀了.下面我們來製作:
- 首先我們需要建立一個類來初始化一個捕獲視窗:建立一個 DebugWin 如下:
local DebugWin = class("DebugWin", function () local layer = cc.LayerColor:create(cc.c4b(10,10,10,204)) return layer end) function DebugWin:ctor(msg) cc.Director:getInstance():pause() local msg = string.sub(msg, 1, 1000) local size = cc.Director:getInstance():getWinSize() self:setLocalZOrder(100000) local msgText = ccui.Text:create(msg,nil,20) msgText:setTextAreaSize(cc.size(650,500)) msgText:setTextHorizontalAlignment(cc.TEXT_ALIGNMENT_LEFT) msgText:setTextVerticalAlignment(cc.VERTICAL_TEXT_ALIGNMENT_CENTER) msgText:setPosition(size.width * 0.5, size.height * 0.5 + 20) self:addChild(msgText) local closeBtn = ccui.Layout:create() closeBtn:setContentSize(cc.size(130,40)) closeBtn:setBackGroundColorType(1) closeBtn:setBackGroundColor(cc.c3b(200,0,0)) closeBtn:setPosition(cc.p(size.width / 2 - 65, 80)) self:addChild(closeBtn) local label = ccui.Text:create("確定",nil,25) label:setPosition(65,20) closeBtn:addChild(label) closeBtn:setTouchEnabled(true) closeBtn:addTouchEventListener(function(sender, state) if state == ccui.TouchEventType.ended then self:removeFromParent() cc.Director:getInstance():resume() end end) end return DebugWin
- 在cocos 的 init.lua 檔案裡面 將捕獲的error資訊新增到我們的視窗上面去.修改如下:
__G__TRACKBACK__ = function(msg) local msg = debug.traceback(msg, 3) print(msg) if DEBUG > 1 then local test = require "DebugWin" test = test.new(msg) local scene = display:getRunningScene() if tolua.isnull(scene) then scene = cc.Scene:create() display.runScene(scene) end scene:addChild(test,99999) end return msg end
3. 執行後的結果如下,這樣除錯起來如果遊戲有報錯,就比較直觀了.