【发布时间】:2011-10-13 23:39:53
【问题描述】:
这就是我在 main.lua 中从 menu.lua 调用函数的方式
local menu = require("menu")
menu.drawMenu()
但是我将如何在 menu.lua 中调用 main.lua 中的函数?可能吗 ?或设置一个监听器或类似的东西
【问题讨论】:
标签: function lua call coronasdk
这就是我在 main.lua 中从 menu.lua 调用函数的方式
local menu = require("menu")
menu.drawMenu()
但是我将如何在 menu.lua 中调用 main.lua 中的函数?可能吗 ?或设置一个监听器或类似的东西
【问题讨论】:
标签: function lua call coronasdk
您可以通过将函数作为参数传递给另一个函数来设置回调函数。因此,扩展您的示例代码:
-- main.lua
local menu = require("menu")
function drawMain()
print("main")
end function
menu.drawMenu(drawMain)
-- menu.lua
menu = {}
menu.drawMenu = function(callback)
print("menu")
callback()
end
return menu
【讨论】:
如果您只是想为菜单提供操作,那么使用一组回调函数(在构建 GUI 元素时使用)以在单击菜单项时触发不是更好吗?
此链接可能会对您有所帮助。 http://www.troubleshooters.com/codecorn/lua/luacallbacks.htm
【讨论】:
您可以通过稍微调整环境来做到这一点,尽管这可能会产生影响并且不能直接移植到 Lua 5.2:
-- main.lua
mainfunction = function() print"main function" end
menu = require"menu"
env=getfenv(menu.drawmenu) -- get the original environment
env=setmetatable(env,{__index=_G}) -- look up all variables not existing in that
-- environment in the global table _G
menu.drawmenu()
-- menu.lua
menu={}
menu.drawmenu=function()
print'drew menu'
mainfunction()
end
return menu
【讨论】: