尝试改变对象值和引用值,但不是坐标。

我有这个函数

local function cambiodesp(old,new)
   block[new]= block[old]
end

并且我有这个:

random=4
local image = display.newImage(images[random], 0, 0)
image.value = random
image.x = 161
image.y = 451
block[0] = image

random=1
image.value = random
local image = display.newImage(images[random], 0, 0)
image.x = 161
image.y = 515
block[1] = image

我想要改变图像的 block.value,即 block 中图像的引用,但我不想改变它们的坐标。我调用了函数:

cambiodes(0,1)

但是坐标也发生了改变,我不知道该怎么办。

我希望你能给我一个答案、建议或者任何你认为合适的东西。

非常感谢。

点赞
用户1442917
用户1442917

你正在复制整个表格(引用);如果你想保留 x 和 y 坐标,只需保存它们并重新分配(假设其他所有内容按您所希望的方式发生):

local function cambiodesp(old,new)
   local x, y = block[new].x, block[new].y
   block[new]= block[old]
   block[new].x, block[new].y = x,y
end
2013-06-20 04:16:21
用户2303714
用户2303714
local function swap(old,new)
    block[old], block[new] = block[new], block[old] --swap references
    block[old].x, block[old].y, block[new].x, block[new].y = block[new].x, block[new].y, block[old].x, block[old].y --re-set coordinates
end
local function swap(old,new)
    block[old], block[new] = block[new], block[old] --交换引用
    block[old].x, block[old].y, block[new].x, block[new].y = block[new].x, block[new].y, block[old].x, block[old].y --重新设置坐标
end
2013-06-20 07:33:04