在quick-cocos2d-x lua的开发过程中,我们在传递参数的时候需要传入函数作为我们的参数,通常有两种方法,一种是使用function把我们的函数包起来,另一种是用handler将我们的函数封装起来,这两种方法在使用的时候是明显不同的,下面我就要贴出自己在quick中的代码来说明我理解的二者的不同。
首先是handler,如果我们的参数函数本身是没有参数的,那么应该是:
local MainScene = class("MainScene", function()
return display.newScene("MainScene")
end)
function MainScene:ctor()
end
function MainScene:onEnter()
self:func2(handler(self, self.func1))
end
function MainScene:func1()
print("haha")
end
function MainScene:func2(func)
func()
end
return MainScene
如果这个handler中所包装的函数是带参数的,那么代码应该是:
local MainScene = class("MainScene", function()
return display.newScene("MainScene")
end)
function MainScene:ctor()
end
function MainScene:onEnter()
self:func2(handler(self, self.func1)(22))
end
function MainScene:func1(h)
print("haha" .. " " .. h)
end
function MainScene:func2(func)
--func()
end
return MainScene
如果我们用function, 无论带不带参数,我们用如下的方法均可:
local MainScene = class("MainScene", function()
return display.newScene("MainScene")
end)
function MainScene:ctor()
end
function MainScene:onEnter()
self:func2(function()
self:func1(22)
end)
end
function MainScene:func1(h)
print("haha" .. " " .. h)
end
function MainScene:func2(func)
func()
end
return MainScene
注意:第一段代码和第二段代码的func2对于其中的func是否被调用是有区别的。