我正在尝试使用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'。
在我定义为Example的任何其他函数中:SomeFunction()self指向我的Example实例,我可以完全访问其成员,self是wxPaintEvent吗?
这是怎么发生的? Connect会以某种方式改变自我吗?我现在如何访问我的会员?
感谢任何帮助!
答案 0 :(得分:1)
当您在example.OnPaint
中注册somePanel:Connect(wx.wxEVT_PAINT, example.OnPaint)
作为事件处理程序时,它始终将事件作为第一个参数,但您的方法希望将对象(self
)作为第一个参数传递因此你得到的错误。您需要用以下内容替换注册:
somePanel:Connect(wx.wxEVT_PAINT, function(event) example:OnPaint(event) end)