0

我有以下代码:

{

    identifier = "hand:" .. card.name,
    area = { x, y, 100, 100 },
    on_click = function()
        -- Code goes here
    end

}

我想使用 card 变量和对放置此代码的对象的引用来修改具有变量值的类的card变量。

那么,如何将本地上下文中的参数提供给将在其他代码段中调用的函数?

我希望on_click在事件管理循环中启动该功能。

4

2 回答 2

1

如果我正确理解了这个问题,您希望能够从 on_click 处理程序中引用该on_click处理程序所属的对象。为此,您需要拆分您拥有的语句:

local card = { name = "my card" }
local object = {
  identifier = "hand:" .. card.name,
  area = { x, y, 100, 100 },
}
object.on_click = function()
  -- Code goes here
  -- you can reference card and object here (they are upvalues in this context)
  print(card.name, object.area[3])
end
object.click()

您也可以on_click稍微不同地定义;在这种情况下,您将获得object隐式声明的self变量(请注意,您对它的称呼也有所不同):

function object:on_click()
  -- Code goes here
  -- you can reference card and object here
  print(card.name, self.area[3])
end
object:click() -- this is the same as object.click(object)
于 2012-09-05T15:33:27.307 回答
0

分配功能时保存它,像这样

{
    identifier = "hand:" .. card.name,
    area = { x, y, 100, 100 },
    on_click = function()
        local a_card = card
        print(a_card.name)
    end
}
于 2012-09-05T14:26:31.297 回答