我刚刚开始学习电晕和lua,我的第一个项目是制作一个小骰子游戏,我刚刚开始它!继承人骰子对象......
--declare table + metatable
local dice = {}
local dice_mt = {__index = dice}
--CONSTRUCTOR
function dice.new(ypos, xpos)
local newdice = {xpos = xpos, ypos = ypos,dicetext = display.newText("X", 50*xpos , 50*ypos , nil, 50)}
--dicetext = display.newText(facevalue, 50*xpos , 50*ypos , nil, 50)
return setmetatable(newdice, dice_mt)
end
--rolldice function
function dice:rolldice()
self.dicetext.text = math.random(0,6)
end
return dice
游戏中有一个可以滚动的25个骰子的网格(上面有rolldice函数) 继承人我的main.lua
display.setStatusBar(display.HiddenStatusBar)
local diceclass = require ("dice")
for i = 1, 5, 1 do
local die = diceclass.new(i,i)
i = i+1
end
die:rolldice()
我试图以编程方式生成骰子网格(atm我只是在对角线上生成5个骰子(只是文本)。到目前为止这很好但我的问题是运行rolldice函数。它在那里工作只有1个骰子,但没有更多。 我猜测问题是我拥有同名的所有这些类的实例。当我在for循环中创建它们时,有没有办法以编程方式为它们提供不同的名称?或者有更好的方法吗?谢谢!
答案 0 :(得分:0)
local
变量之所以如此命名是因为它们是 local 到它们所定义的范围。 die
在for
循环中定义。因此,一旦离开for
循环,它就会停止存在。
如果要创建die
个对象的数组,则需要创建一个可在循环外部访问的数组,然后将die
个对象添加到此阵列。
此外,i = i+1
会适得其反,因为Lua知道如何增加循环本身。此外,它可能会导致未定义的行为。