Что такое самоизменяющееся значение?
Я пытаюсь нарисовать некоторые вещи, используя 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: невозможно вызвать неизвестный метод "m_panels" для типа "wxPaintEvent".
В то время как в любой другой функции, которую я определяю как Пример:SomeFunction() self указывает на мой экземпляр Example, и я могу получить полный доступ к его членам, здесь self это wxPaintEvent?
Как это случилось? Connect как-то меняет себя? Как я могу получить доступ к своим членам сейчас?
Цени любую помощь!
1 ответ
Когда вы регистрируетесь example.OnPaint
как обработчик события в somePanel:Connect(wx.wxEVT_PAINT, example.OnPaint)
, он всегда получает событие в качестве первого параметра, но ваш метод ожидает объект (self
) передается в качестве первого параметра, поэтому вы получите ошибку. Вам нужно заменить регистрацию на что-то вроде этого:
somePanel:Connect(wx.wxEVT_PAINT, function(event) example:OnPaint(event) end)