1. 程式人生 > >自己製作一個 CoCos2dx 錯誤資訊框介面

自己製作一個 CoCos2dx 錯誤資訊框介面

自己製作一個 CoCos2dx 錯誤資訊框介面

在除錯cocos專案的時候對程式碼的錯誤提示,我們通常會在 除錯窗裡面去檢視,但是如果有些不太影響的錯誤可能不易看到,我們可以製作一個 Debug 視窗來捕獲 並顯示在 遊戲裡面,這樣就比較直觀了.下面我們來製作:

  1. 首先我們需要建立一個類來初始化一個捕獲視窗:建立一個 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
  1. 在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. 執行後的結果如下,這樣除錯起來如果遊戲有報錯,就比較直觀了.
在這裡插入圖片描述