在Lua中更改对象引用

这里我生成了一个大小为4x8的面板,其中有图片,并将其保存在block中的引用中。

local function createBlocks()

    local rowcount = 8
    local colcount = 4

    local blockWidth = display.contentWidth / (colcount*4)
    local blockHeight = display.contentWidth / (rowcount*2)

    local row
    local col
    local pan = 3
    local i=0
    for row = 1, rowcount do
            for col = 1, colcount do
                    local x = (col - 1) * blockWidth + pan
                    local y = (row + 1) * blockHeight + pan
                    local random= math.random(1,6)

                    random = revisarTres(i, random)

                    print (random)
                    block[i] = display.newImage(images[random], x, y)
                    block[i].value= random
                    block[i]:addEventListener("touch", blockTouch)
                    i=i+1
            end
    end
end

然后我添加了一个事件监听器,以检查他们是否已经触摸到了图像。 然后我验证如果他们进行了一次触摸,它会进行转换。

transition.to(startBlock, {time=tranTime, x=event.target.x, y=event.target.y})
transition.to(event.target, {time=tranTime, x=startBlock.x, y=startBlock.y})

但我想在block数组中更新这个变化。所以我做了这个:

aux = block[old]
auxval = block[old].value
block[old]= block[new]
block[old].value= block[new].value
block[new]= block[old]
block[new].value= auxval

但它没有工作,我想知道一种改变参考值的方法。

我希望你能帮帮我,谢谢。

点赞
用户1212870
用户1212870

我想说你的交换两个值的函数是错误的,请看:

aux = block[old]
auxval = block[old].value
block[old]= block[new]
block[old].value= block[new].value
block[new]= block[old]
block[new].value= auxval

这很丑,如果你想要交换 block[old]block[new],可以像这样:

block[old], block[new] = block[new], block[old]
2013-06-18 01:07:11