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

我最近开始使用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

我得到的错误具有以下文本: error loading module 'menu' from file 'menu.lua': menu.lua:24 '' expected near 'end' stack traceback: C: in function 'require' ?: in function 'require' main.lua:6 in main chunk 你想要重新启动项目吗?

点赞
用户1442917
用户1442917

问题不在于 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> 在某个地方被丢弃了)。

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

2015-08-01 18:03:46
用户1870706
用户1870706

首先,您不需要require transition,它已经包含在内了。无论如何,您必须将您的函数添加到您返回的表中:

menu = {}
menu.backgroundStart = function (  )

menu.lua的最后一行应该是

return menu

然后当您需要该模块时,代码会执行并且menu表会被返回,在main.lua中您现在可以访问那些函数。

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

2015-08-03 01:29:57