wxlua自改值?
wxlua self changing value?
我正在尝试使用 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 is a wxPaintEvent?
这是怎么发生的?连接是否会以某种方式改变自我?我现在如何访问我的会员?
感谢任何帮助!
当您将 example.OnPaint
注册为 somePanel:Connect(wx.wxEVT_PAINT, example.OnPaint)
中的事件处理程序时,它总是将事件作为第一个参数获取,但您的方法期望对象 (self
) 作为第一个参数,因此你得到的错误。您需要用这样的内容替换注册:
somePanel:Connect(wx.wxEVT_PAINT, function(event) example:OnPaint(event) end)
我正在尝试使用 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 is a wxPaintEvent?
这是怎么发生的?连接是否会以某种方式改变自我?我现在如何访问我的会员?
感谢任何帮助!
当您将 example.OnPaint
注册为 somePanel:Connect(wx.wxEVT_PAINT, example.OnPaint)
中的事件处理程序时,它总是将事件作为第一个参数获取,但您的方法期望对象 (self
) 作为第一个参数,因此你得到的错误。您需要用这样的内容替换注册:
somePanel:Connect(wx.wxEVT_PAINT, function(event) example:OnPaint(event) end)