Corona SDK/Lua 无法使用外部模块

Corona SDK/Lua Cannot use external modules

我最近开始使用 Corona SDK 在 Lua 中编程来制作应用程序,但我无法让我的 main.lua 使用我的 menu.lua 的功能。我不断收到错误。这是我的代码。谢谢你的时间。

    --main.lua--
    local menu = require( "menu" )
    menu.backgroundStart()

    --menu.lua--
    local transition = require("transition")

menu = {}
backgroundStart = function (  )
    local background = display.setBackground( 0, 0, 0)
    animationStart();
end

animationStart = function ()

    local pixelRadius = 5
    local xCenter = math.random(0, display.contentWidth)
    local yCenter = math.random(0, display.contentHeight)
    local whiteCircles = display.newCircle( background, xCenter, yCenter, pixelRadius )
    whiteCircles.setBackground(255,255,255);
    transition.fadeIn( whiteCircles, { time = 200, delay = 10 } )
end
return M;
end

我收到的错误包含以下文本: 从文件 'menu.lua' 加载模块 'menu' 时出错: menu.lua:24 '' 预计在 'end' 附近 堆栈回溯: C: 在函数中 'require' ?: 在函数中 'require' main.lua:6 在主块中 您要重新启动该项目吗?

问题不在于 Corona 或使用外部模块。正如错误消息所说(error loading module 'menu' from file 'menu.lua': menu.lua:24 '' expected near 'end'),问题出在menu.lua中的第24行,这意味着文件已正确加载。我的猜测是你在第 24 行多了一个 end 语句,这将产生 '<eof>' expected near 'end' 消息(并且 <eof> 被丢弃在某处)。

解决该(和任何其他)问题,您的模块应该可以正常加载。

首先,您不需要转换,它已包含在内。您必须以任何方式将函数添加到要返回的 table:

menu = {}
menu.backgroundStart = function (  )

menu.lua的最后一行应该是

return menu

然后,当您需要模块时,代码将执行并返回菜单 table,在 main.lua 中,您现在可以访问这些功能。

您确实在 menu.lua 模块的末尾有一个不需要的额外结尾。