【发布时间】:2012-05-15 02:30:34
【问题描述】:
如何将值从 a.lua 传递到 b.lua?
让我们说在我的a.lua 我有这个变量代码。
local value = "Hello WOrld!"
director:changeScene ("b")
我的问题是我如何将value 从a.lua 传递到b.lua?
提前谢谢....
【问题讨论】:
如何将值从 a.lua 传递到 b.lua?
让我们说在我的a.lua 我有这个变量代码。
local value = "Hello WOrld!"
director:changeScene ("b")
我的问题是我如何将value 从a.lua 传递到b.lua?
提前谢谢....
【问题讨论】:
当你声明一些本地内容时,你明确告诉 Lua 不要在脚本之间共享它。只需创建一个非局部变量:
value = "Hello World"
在 b.lua 文件中只需要 a.lua 文件并使用它,例如在 b.lua 文件中
local a_File = require "a"
print(a_File.value)
你会得到输出为
"Hello World"
【讨论】:
a.lua 文件的顶部执行module('a'),或者,最好在最后执行return {value = "Hello World"},以避免使用module(因为它是@987654321 @; 它在 Lua 5.2 中被删除)。
将值分配给全局表 (_G),如下所示:
_G.value = "Hello WOrld"
在另一个脚本中,您可以这样做:
value = _G.value
【讨论】:
value = _G.value 如果前面没有其他内容,则什么也不做
_G 在第一行中完全是多余的,而第二行则很奇怪:value 和_G.value 是相同的东西,所以您正在写value = value或_G.value = _G.value 或_G["value"] = _G["value"]。
比把东西塞进全局表更好的是按照它的预期使用方式使用 lua 的模块系统。
假设你有两个文件,a.lua 和 b.lua。 b.lua 需要来自 a.lua 的一些值。这就是你要做到的:
a.lua 代码:
module("a", package.seeall)
local myVal = "My value in file a"
local SomeVal = 15
function GetSomeValue()
return myVal
end
b.lua 代码:
require "a"
print(a.GetSomeValue()) -- prints 'My value in file a'
print(a.SomeVal) -- prints 15
print(SomeVal) -- prints nil, unless you've declared it in b.lua
这比在 _G 表中填充东西要干净得多。如果您有 3 或 4 个不同的脚本,并且您尝试存储应该命名相同的值,只是在不同的上下文中,会发生什么情况?能够说:
a.Value
a.Function()
不仅更清楚你在哪里获取数据,而且比说清楚得多
_G["Value"]
并希望这实际上是您所希望的价值。如果您只处理一个只有两个文件的简单案例,使用 _G 可能会更容易。但最好是学习最佳实践并尽早使用它们。如果您有多个文件协同工作,那么使用 _G 将是一场噩梦......
【讨论】:
local 以使其打印 15。否则它将按应有的方式打印 nil。
a.lua 和b.lua 并运行lua b.lua我得到:My value in file a nil nil (Lua 5.1.3)
使用director API我们将一个值传输到另一个lua文件很容易。它以表或数组类型发送数据
下面的代码很有用..
来自 .lua 文件
data="hellow"
director:changeScene({data},"levelroom")
来自 b.lua 文件
module(...,package.seeall)
new=function(params)
localGroup=display.newGroup()
data=params.data
print(data) --output:hellow
return localGroup
end
【讨论】: