如何访问在模块中声明的变量?

在我的game.lua文件中,我有以下代码:

local sprites = require("sprites.lua")

sprites.lua文件包含以下代码:

local iceberg = display.newImage("iceberg.png")
iceberg.x = _W/2
iceberg.y = _H/2
iceberg.alpha = 1

现在,我想在"game.lua"中将"iceberg.alpha"设置为0,但是如果我尝试,Corona会返回"attempt to index global iceberg (a nil value)"

当然,sprites.lua包含

module(..., package.seeall)

我做错了什么?

我甚至尝试了sprites.iceberg.alpha = 0,但很明显它不起作用。

点赞
用户1442917
用户1442917

不要使用 module。只需在 sprites.lua 中返回 iceberg 值或您想要访问的任何其他值:

-- sprites.lua
local iceberg = display.newImage("iceberg.png")
iceberg.x = _W/2
iceberg.y = _H/2
iceberg.alpha = 1
return iceberg

-- game.lua
local iceberg = require("sprites.lua")
-- iceberg.alpha is available here

Lua 模块 指南提供了关于此如何工作以及更多引用的一些附加信息。

2015-02-01 20:19:02
用户88888888
用户88888888

确保您的变量不是本地的。看看这个正常工作的例子。

假设在下面的代码中使用

local star = display.newLine(200, 90, 227, 165)

在 test.lua 中,那么您将收到错误消息。

这是 "main.lua"。尝试更改 alpha 值。

require "test"
star.alpha = 0.5

这是 "test.lua"。

star = display.newLine(200, 90, 227, 165)
star.anchorX = 0.2257
star.anchorY = 0.5

star.x = display.contentCenterX
star.y = display.contentCenterY
local function rotate(x)
    timer.performWithDelay(1, function() star.rotation = star.rotation + 5;end, 15)
end
rotate()
2015-02-06 10:28:22