wxlua自变化值?

wxlua自变化值?,lua,wxwidgets,self,wxlua,Lua,Wxwidgets,Self,Wxlua,我想用wxlua画一些东西 ExampleClass = {} function ExampleClass:New(someWxPanel) local obj = {} setmetatable(obj, self) self.__index = self self.m_panel = someWxPanel return obj end function ExampleClass:OnPaint() local dc = wx.wxPaintDC(self.m_p

我想用wxlua画一些东西

ExampleClass = {}

function ExampleClass:New(someWxPanel)
  local obj = {}
  setmetatable(obj, self)
  self.__index = self
  self.m_panel = someWxPanel
  return obj
end

function ExampleClass:OnPaint()
  local dc = wx.wxPaintDC(self.m_panel)
   --paint some stuff
end


local example = ExampleClass(somePanel)
somePanel:Connect(wx.wxEVT_PAINT, example.OnPaint)
我收到以下错误消息: wxLua:无法对“wxPaintEvent”类型调用未知方法“m_panels”

而在我定义为示例的任何其他函数中:SomeFunction()self指向我的示例实例,我可以完全访问它的成员self是wxpainevent吗

这是怎么发生的?连接是否以某种方式改变了自己?我现在如何访问我的成员


谢谢你的帮助

当您在
somePanel:Connect(wx.wxEVT_PAINT,example.OnPaint)
中将
example.OnPaint
注册为事件处理程序时,它总是将事件作为第一个参数,但您的方法希望对象(
self
)作为第一个参数传递,因此会出现错误。您需要将注册替换为以下内容:

somePanel:Connect(wx.wxEVT_PAINT, function(event) example:OnPaint(event) end)

setmetatable(对象、自身)应正确。至少我是这样从其他渠道知道的,包括Lua的参考资料。你是对的。对不起,吵闹了。