3

如何将值从a.luato传递b.lua

让我们说a.lua我有这个变量代码。

local value = "Hello WOrld!"
director:changeScene ("b")

我的问题是我怎么value能从a.luab.lua

提前致谢....

4

4 回答 4

9

当你声明一些本地的东西时,你明确告诉 Lua 不要在脚本之间共享它。只需创建一个非局部变量:

value = "Hello World"

在 b.lua 文件中只需要 a.lua 文件并使用它,例如在 b.lua 文件中

local a_File  = require "a"
print(a_File.value)

你会得到输出为

"Hello World"
于 2012-05-15T02:35:20.863 回答
5

将值分配给全局表 ( _G),如下所示:

_G.value = "Hello WOrld"

在另一个脚本中,您可以执行以下操作:

value = _G.value
于 2012-05-15T02:34:01.250 回答
3

比把东西塞进全局表更好的是按照它的预期使用方式使用 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 将是一场噩梦......

于 2012-05-15T15:00:31.890 回答
1

使用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
于 2012-08-24T15:48:18.863 回答