Lua回调函数“尝试索引全局变量”

以下是翻译内容,保留原本的 markdown 格式

function AnotherSCT:OnNormalColorFontClick( wndHandler, wndControl, eMouseButton )
   local color = Color.new(0.5, 1, 0.5, 1)
   ColorGetter.GetColor(color, false, ColorCallBack, color)
end

function ColorCallBack(color)
  if color == nil then
    Print("nil")
      else
    wndMain:FindChild("NormalFontTypeTestText"):SetTextColor(color)
  end
end

该行代码:wndMain:FindChild <--- 生成“尝试对全局变量“wndMain”进行索引”

我如何在回调函数中访问wndMain?

点赞
用户204011
用户204011

你在 OnNormalColorFontClick 中有访问 wndMain 的权限吗?如果有,你可以将它作为参数传递给回调函数,或者在 OnNormalColorFontClick 中定义回调函数,并将其作为闭包捕获 wndMain

编辑:下面是“闭包”解决方案。

function AnotherSCT:OnNormalColorFontClick( wndHandler, wndControl, eMouseButton )
    local color = Color.new(0.5, 1, 0.5, 1)

    local function ColorCallBack(color)
        if color == nil then
            print("nil")
        else
            wndMain:FindChild("NormalFontTypeTestText"):SetTextColor(color)
        end
    end

    ColorGetter.GetColor(color, false, ColorCallBack, color)
end
2014-05-11 18:15:21