如何从多个触摸事件中合并值?Corona/Lua

我有一个带有三个按钮的应用程序。当用户点击多个按钮时,我想要有一个使用多个输入的函数。例如,如果按钮的值为1、2、3,用户按下按钮2和按钮3,我想能够使用我的事件监听器来说"用户制作了5个"。我想也许可以使用单独的事件处理程序,但我不知道如何组合这些值。我是一个初学者,所以任何帮助都将不胜感激。

编辑:如何获得投票?我做了很多研究,并且有很多关于多点触摸的信息,但是没有关于同时处理多点触摸事件的信息。如果有人愿意阅读,我将非常乐意阅读它,但只是因为您认为它很容易、简单或我没有研究足够就对我的问题进行了投票?我从上午9点开始就一直在想这件事,已经8个小时了。在朋友的建议下,我只是请求一点帮助。具有讽刺意味的是,这是我第一次在这里或任何地方寻求帮助,却立即被人冷落了。

点赞
用户2424993
用户2424993

首先你需要启用多点触控。

为所有按钮创建一个监听器。

一种方法是:

创建一个表,用于保存当前按下的按钮。

event.phase为“began”时将按钮添加到表中,在event.phase为“ended”时将其移除。

然后,当你想要处理数据时,迭代表格并从表格中具有条目的按钮中获取值/操作或任何你想要的东西。

local pressedButtons = {}

function touchListener( event )
    if event.phase == "began" then
        pressedButtons[event.target] = true
    end
    if event.phase == "ended" then
        pressedButtons[event.target] = nil
    end
end

for i = 1, 3 do
    local button = display.newRect( 70 , i * 80 , 40 , 40 )
    button.value = i
    button:addEventListener("touch", touchListener)
end

function printOutput()
    local sum = 0
    for k,v in pairs(pressedButtons) do
        sum = sum + k.value
    end
    print( sum )
end

timer.performWithDelay( 1000 , printOutput, -1)

注意,你可以为每个按钮分配一个函数,而不是value。你将在printOutput函数中调用该函数。

此外,请注意,我正在将按钮对象添加为表的键,以便轻松删除。

此外,你可能希望使触摸逻辑更加复杂(添加焦点等)。

我还建议使用表监听器。

2014-07-17 12:51:50