如何将函数传递给 Gideros 的 Timer.delayCall 函数?

首先,可以这样做:

local delay = 1000
local timer = Timer.delayedCall(delay,
                                function(data)
                                    print(data)
                                end,
                                20)

但是,似乎不能像这样做:

function Game:DoSomething(data)
   print(data)
end

local timer = Timer.delayedCall(delay,
                                self.DoSomething,
                                20)

换句话说,我想要在外部定义函数(这样可以被其他人重用)。但是,似乎不可能。或者是我做错了什么吗?

点赞
用户8586652
用户8586652

如果您想以通用的方式使用Timer.delayedCall调用带多个参数的方法,则可以像这样做:

function Game:DoSomething(data)
   print(data)
end

function invokeMethod(args)
    local func=table.remove(args,1)
    func(unpack(args))
end

local timer = Timer.delayedCall(
      delay,
      invokeMethod,
      {self.DoSomething,self,20}) --self is the instance you are calling

PS: 这是我在SO上的第一篇文章,如果格式不正确,请见谅...

2018-02-12 07:14:26