Lua 如何在Corona SDK中使用表

Lua 如何在Corona SDK中使用表,lua,coronasdk,Lua,Coronasdk,我有一个一般性的问题,但我认为如果我试图太具体,我只会使它非常混乱。所以基本上我想知道的是: 当您在Corona/Lua中创建一个表时,您可以在其中放入几乎无限数量的内容,对吗 假设我创建了一个名为 rectangles = {}; 然后我在里面放了一堆矩形的实例。如果我想一次更改所有矩形的属性,我该怎么做 我理解它如何处理表中的一系列项目,如: for i = 1, 10 do rectangles[i] = display.newImage("rectang

我有一个一般性的问题,但我认为如果我试图太具体,我只会使它非常混乱。所以基本上我想知道的是:

当您在Corona/Lua中创建一个表时,您可以在其中放入几乎无限数量的内容,对吗

假设我创建了一个名为

   rectangles = {};
然后我在里面放了一堆矩形的实例。如果我想一次更改所有矩形的属性,我该怎么做

我理解它如何处理表中的一系列项目,如:

    for i = 1, 10 do 
        rectangles[i] = display.newImage("rectangle.png");
然后,要改变所有图像的x位置,例如,你只需说

     rectangles[i].x = 20;

但是,在不知道数组中有多少项的情况下,您如何更改数组中所有项的属性,就像您没有给出上限一样,因为表总是在增长?

对于只有一种元素的数组,您可以使用
#矩形
进行元素计数

for i = 1, #rectangles do 
        rectangles[i] = display.newImage("rectangle.png");
end

关于这个例子,

如果将元素添加到
矩形中,如下所示:

矩形[b]=b

它实际上做的是

矩形[“083DF6B0”]=b”

您可以看到,当显示对象
b
用作键时,它将转换为十六进制字符串

此外,您还需要使用
按原样检查每个元素
键(例如数组.长度,数组.宽度,数组.权重…)而不是索引(例如数组[2],数组[3]…)


对于只有一种元素的数组,可以使用
#矩形
进行元素计数

for i = 1, #rectangles do 
        rectangles[i] = display.newImage("rectangle.png");
end

关于这个例子,

如果将元素添加到
矩形中,如下所示:

矩形[b]=b;

它实际上做的是

矩形[“083DF6B0”]=b”

您可以看到,当显示对象
b
用作键时,它将转换为十六进制字符串

此外,您还需要使用
按原样检查每个元素
键(例如数组.长度,数组.宽度,数组.权重…)而不是索引(例如数组[2],数组[3]…)


这取决于您在表中存储项目的方式。如果按索引存储(如示例中所示),则可以使用来迭代索引和值:

for index,value in ipairs(rectangles) do
    value.x = 20
    --or
    rectangles[index].x = 20
end
如果您是按键存储(如您在评论中提到的youtube视频),请使用以下方法进行迭代:


只是不要同时使用索引和键来存储项目,除非您知道会发生什么。

这取决于您在表中存储项目的方式。如果按索引存储(如示例中所示),则可以使用来迭代索引和值:

for index,value in ipairs(rectangles) do
    value.x = 20
    --or
    rectangles[index].x = 20
end
如果您是按键存储(如您在评论中提到的youtube视频),请使用以下方法进行迭代:


只是不要同时使用索引和键来存储项目,除非你知道会发生什么。

-1:因为缺乏研究。如何在Lua中迭代列表中的所有元素是您可以在任何地方找到的基本内容。不管是不是电晕天体的列表;一个列表是一个列表。你可以考虑调整一下你的问题,这可能会误导其他人对你的支持率下降:因为缺乏研究。如何在Lua中迭代列表中的所有元素是您可以在任何地方找到的基本内容。不管是不是电晕天体的列表;一个列表是一个列表。你可以考虑稍微调整一下你的问题,它可能误导其他人投下你的票。我确实知道长方形意味着桌子的整个长度,但问题是我在这里看这个教程:在大约33点50分,他做了这个气球[B]=B,我不明白。然后说你不能这样用。但是如果我尝试使用引出序号[b]调用表中的所有元素,例如更改所有元素的x值。(气球[b].x=10)。事实并非如此work@StevePatterson——youtube的例子是按键存储,而不是按索引存储。如果您也这样做,您将希望使用@Corbin-March迭代表中的每一项-感谢您提供的信息,我必须承认,尽管Lua引用有点让人困惑,因为我对编程还不熟悉。因此,如果我试图将.to()转换为表中的所有项,我会将什么作为第一个参数?转换到(我在这里放什么?,{time,x,y})@Steve Patterson-据我所知,您需要为要设置动画的每个项目调用一次-在您的示例中,矩形表中的每个项目。类似于
对于索引,ipair(矩形)中的值进行转换。到(值,{time,x,y})结束
(如果按键存储,则使用
)。然而,我不是Corona开发者,所以这正是我从文档中收集到的。不要犹豫,提出一个新问题。“祝你好运!”史蒂文森回答。对于剩下的部分,科尔宾·马奇已经有了一个很好的答案,我知道矩形意味着桌子的整个长度,但问题是我在这里看了这个教程:大约33:50,他做了这个气球[b]=b,我不懂,然后说你不能用这种方式。但是如果我尝试使用引出序号[b]调用表中的所有元素,例如更改所有元素的x值。(气球[b].x=10)。事实并非如此work@StevePatterson——youtube的例子是按键存储,而不是按索引存储。如果您也这样做,您将希望使用@Corbin-March迭代表中的每一项-感谢您提供的信息,我必须承认,尽管Lua引用有点让人困惑,因为我对编程还不熟悉。因此,如果我试图将.to()转换为表中的所有项,我会将什么作为第一个参数?转换到(我在这里放什么?,{time,x,y})@Steve Patterson-据我所知,您需要为要设置动画的每个项目调用一次-在您的示例中,矩形表中的每个项目。类似于
对于索引,ipair(矩形)中的值进行转换。到(值,{time,x,y})结束
(如果按键存储,则使用
)。然而,我不是电晕开发者,所以这只是w