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

时间:2018-02-11 10:27:23

标签: timer lua gideros

首先,可以这样做:

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) 

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

1 个答案:

答案 0 :(得分:1)

如果您想要的是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的第一篇文章,对不起,如果格式不正确...