我试图用可以从任何地方访问的各个属性创建同一显示对象的多个副本。特别是,我希望能够挖掘并与每个人互动。到目前为止我的代码低于: -可以分别与之交互的同一个对象的多个副本
centerX = display.contentCenterX
centerY = display.contentCenterY
local function onGemTouch(event)
print("to see if each object can be tapped")
end
local spawnTable = {}
local function gamebegin(params)
ball = display.newImageRect(params.image, 62,62)
ball.x = centerX - 4*60 +2*(params.x-1)*60
ball.y = centerY -3*60 + (params.y-1)*60
ball.ballTable = params.ballTable
ball.index = #ball.ballTable+1
ball.myName = ball.index
ball.ballTable[ball.index] = ball
return ball
end
--i have four images that I want to use randomly--
for i = 1, 4 do
for j = 1,7 do
local spawn = gamebegin({image = "images/" .. math.random(4) ..".png", x=i, y = j, ballTable = spawnTable})
end
end
ball.tap = onGemTouch
ball:addEventListener("tap", ball)
代码工作在某种意义上说,没有任何错误和副本中,我想,但只能被点击对象的最后一个副本电网apppear。很显然,我在这里做错了什么。 任何帮助将不胜感激。
不客气。一般来说,您应该回复我的评论(我不确定您是否拥有这些权限)。还有一点需要注意:通常你不会将一个集合(在这种情况下是'spawnTable')传递给一个为该集合创建一个项目的函数。通常你建立这个项目(通常在构造函数中,但乍一看我不确定Lua是否有构造函数),然后你从函数中返回它。然后你将返回值放入集合中。像'local ball = getNewBall(...); ballTable [nextIndex] = ball;'。 – 2015-04-05 16:46:47
这样你就不需要'ball'上的'index'属性,并且你不需要在'ball'上引用具有'ballTable'属性的集合。无论如何,这些球可能会在集合中移动,除非您更新它们,否则所有索引都将是错误的。如果他们是多个集合的一部分,“ballTable”就意味着什么。 (也不知道为什么你把球的名字设置为'index') – 2015-04-05 16:50:22
另外,我希望我不会烦你,但是如果你在上面放置了'local offset = 60'或类似的东西,你可以在设置时引用它'ball.x'和'ball.y'。这样,如果您想将其更改为50,则可以将其更改为一个地方而不是四个。如果您出于某种原因需要另一个函数中的值,则该函数可用,并且它的名称使您的代码更易于阅读。 – 2015-04-05 16:56:14