0

私は次のコードを持っています:

{

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

}

カード変数と、このコードが配置されているオブジェクトへの参照を使用して、クラスの変数を変数の値で変更したいと考えてい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 に答える