0

首先,可以这样做:

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) 

换句话说,我想在外面定义函数(以便被其他人重用)。然而,这似乎是不可能的。还是我做错了?

4

1 回答 1

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上的第一篇文章,如果格式不正确,请见谅...

于 2018-02-12T07:14:26.110 回答