使用Corona/Lua处理多点触控

我正在为一个简单的游戏使用多点触控。我有三个按钮,如果按下一个按钮,相应的对象将被删除,如果正确的两个按钮被“多点触控”,则相应的对象将被删除。我的问题是,多点触摸处理程序会触发两个事件,因此在应该只删除一个对象时删除两个对象。这是我代码的简化版本:

function buttonHandler(event)

  -- 存储用户的输入
   if (event.phase == "began") then
      mt[event.target.id] == true
   end

   -- 当按钮被释放时,给用户输入赋一个值。
   if (event.phase == "ended") then
      if mt.One == true and mt.Two == true then number = 3
      elseif mt.One == true and mt.Two == false then number = 1
      elseif mt.One == false and mt.Two == true then number = 2
      elseif mt.One == false and mt.Two == false then number = 0
   end

   -- 比较用户的输入和对象,并在有匹配时将其删除。
   if object.number == number then
      object:removeSelf()
      object = nil
   end

   -- 重置用户输入。
   mt.One = false
   mt.Two = false
   mt.Three = false

end

当用户通过同时按下1和2按钮选择数字3时,比较代码会被触发两次,每个“ended”阶段触发一次。因此,如果屏幕上的两个对象分别是3和1,则三将被删除,并且对于1,就像用户猜错了一样。另一方面,如果屏幕上有两个“3”对象,则会使用一个“猜测”删除两个对象。

我考虑将比较代码移到函数外部,但是我将陷入同样的情况。仍将出现一个猜测触发两个事件的情况。

(如果需要我的实际代码,我将非常乐意提供它。这只是节省了很多空间。此外,如果这是一个基本答案,而我只是没有看到它,链接到阅读材料将不胜感激。我不介意工作,只是不知道从哪里开始。)

点赞