改变在Corona中显示物体位置。

我对编程很新,这个问题可能听起来很简单。我已经创建了一个名为box的对象作为模块。

box = {}
m = {}
m.random = math.random

function box:new(x, y)
    box.on = false
    local box = display.newRect(0, 0, 100, 100)
    box:setFillColor(m.random(120, 200), m.random(120, 200), m.random(120, 200))
    box.x = x
    box.y = y
    box.type = "box"
    
    return box
end

return box

在我的main.lua中,我想创建尽可能多的盒子,并像冒险游戏一样如何切换两个盒子的位置,例如我单击其中一个盒子,然后它被选中,我只需单击另一个盒子,它们彼此交换位置。提前感谢!

点赞
用户501459
用户501459

我不了解 Corona,但您所做的一般逻辑如下:

  • 添加事件处理程序,允许您检测何时单击了一个框。
  • 添加一种跟踪所选框的方法。
  • 当一个框被单击时:
    • 如果还没有选择任何框,则选择当前框。
    • 如果先前选择了另一个框,则与当前框交换。
    • 如果已选择的框已被单击,则忽略(或切换已选择)。

一般想法(不确定这是否是有效的 Corona 事件处理,但应该会帮助您接近):

box = {}
m={}
m.random = math.random

-- 跟踪当前选择的框
local selected = nil

function box:new(x,y)
     box.on=false
     local box = display.newRect(0,0,100,100)
     box:setFillColor(m.random(120,200),m.random(120,200),m.random(120,200))
     box.x = x
     box.y = y
     box.type = "box"
     function box:touch(event)
         if not selected then
             -- 还没有选择任何框;选择这个框
             selected = self
             -- TODO: 更改此框的某些状态以在视觉上指示它被选择了
         elseif selected == self then
             -- 我们第二次单击了一个框;我们应该清除选择。
             selected = nil
             -- TODO: 移除选定的可视化提示
         else
             -- 交换以前选择的框的位置,然后清除选择
             self.x, self.y, selected.x, selected.y
                 = selected.x, selected.y, self.x, self.y
             selected = nil
         end
     end
     return box
end
2012-09-12 17:57:04