lua在构造函数参数中使用成员函数

时间:2011-08-16 22:13:44

标签: lua corona

我可能没有在标题中使用正确的单词,因为我是lua的新手,而且它并不像我以前那样。所以我将使用代码来解释自己以及我正在尝试的内容。

我有一个我定义的类(简化):

function newButton(params)
  local button, text
  function button:setText(newtext) ... end
  return button
end

我正在尝试创建一个按钮,一旦点击它就会改变它的文本。所以我创建如下(简化):

local sound = false
local soundButton = Button.newButton{
  text = "Sound off",
  onEvent = function(event)
    if sound then
      sound = false; setText("Sound on")
    else
      sound = true; setText("Sound off")
    end
  end
}

这一切都很好,很有效,除非它告诉我我无法调用setText attempt to call global 'setText' <a nil value>我尝试过使用soundButton:setText(""),但这也不起作用。
是否有我可以遵循的模式来实现我想要的目标?

1 个答案:

答案 0 :(得分:4)

我个人会把“onEvent”拿出来,就像这样:

function soundButton:onEvent(event)
  if sound then       
    sound = false     
    self:setText("Sound on")
  else
    sound = true
    self:setText("Sound off")
  end
end

但是如果你真的想保留它,那么onEvent必须被声明为一个带有两个参数的函数,即(显式)self参数和事件。然后,通话仍为self:setText

例如:

local soundButton = Button.newButton{
  text = "Sound off",
  onEvent = function(self, event)
    if sound then
      sound = false; self:setText("Sound on")
    else
      sound = true; self:setText("Sound off")
    end
  end
}