我正在使用多点触控进行简单的游戏。我有三个按钮,如果按下一个按钮,则删除相应的对象,如果正确的两个按钮是“多触摸”,则删除相应的对象。我的问题是多点触控处理程序触发两个事件,因此删除两个对象时应该只删除一个。这是我的代码的释义版本:
function buttonHandler(event)
-- Store the users input
if (event.phase == "began") then
mt[event.target.id] == true
end
-- When the buttons are released, give the users input a value.
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
-- Compare the user input with the object and remove it if there's a match.
if object.number == number then
object:removeSelf()
object = nil
end
-- Reset the user input.
mt.One = false
mt.Two = false
mt.Three = false
end
发生的情况是,如果用户通过同时按下1和2按钮来选择数字3,则比较代码将被触发两次,每次“结束”阶段一次。因此,如果屏幕上的两个对象是3和1,则三个将被删除,对于1,它就像用户猜错了一样。另一方面,如果屏幕上有两个“3”对象,则两个对象将被一个'猜测'删除。
我考虑过将比较代码移到函数之外,但我会处于同样的情况。一次猜测仍然会引发两个事件。
(如果需要我的实际代码,我会非常乐意提供它。这只会节省很多空间。另外,如果这是一个基本答案,我只是没有看到它,一个链接到阅读材料将不胜感激。我不介意工作,只是不知道从哪里开始。)