2014-07-16 4 views
-1

3 개의 버튼이있는 앱이 있습니다. 사용자가 여러 개의 버튼을 누르면 여러 입력을 사용하는 기능을 원합니다. 예를 들어 버튼의 값이 1, 2, 3이고 사용자가 버튼 2와 버튼 3을 누르면 이벤트 리스너를 사용하여 '사용자가 5를 만들었습니다.'라고 말하고 싶습니다. 나는 별개의 이벤트 핸들러를 사용할 수 있다고 생각했지만, 값을 조합하는 방법을 알지 못했다. 나는 초보자이므로 어떤 도움을 주시면 감사하겠습니다.여러 터치 이벤트의 값을 결합하려면 어떻게해야합니까? Corona/Lua

편집 :? 나는 어떻게 투표를해야합니까? 나는 충분히 연구했고 멀티 터치에 대한 많은 정보가 있지만 동시에 멀티 터치 이벤트를 다루는 것은 아닙니다. 어떤 것이 있다면 그것을 읽는 것보다 더 행복 할 것이지만, 간단하거나 간단하지 않다고 생각하거나 충분히 연구하지 않았기 때문에 내 질문에 투표하는 것보다 더 좋을 것입니다. 나는 오늘 아침 9시 이후로 그것을 알아 내려고 노력해왔다. 그것은 나를위한 8 시간이고 친구 제안에서 나는 약간의 도움을 요청하고있다. 아이러니하게도, 이것은 내가 처음으로 여기 또는 어디서나 도움을 요청하고 나는 즉시 감기 어깨를받습니다.

+0

안녕하세요, 투표를 거절 한 사람들은 당신에게 냉담한 어깨를주지 않습니다. 그들은 여기에 주어진 필수 표준을 따르지 않는 질문에 단순히 반응하고 있습니다 : http://stackoverflow.com/help/on-topic - 두려워하지 마십시오. 당신이 시도한 것에 대해 약간을 포함시킬 수 있습니까? 이벤트 처리기로 시도한 코드를 보여줄 수 있습니까? 최종 결과를 위해 프로그래밍하지 않을 때는 문제를 해결하십시오. 먼저 데이터를 게시 할 단일 버튼을 사용해보십시오. 그런 다음 하나 더 추가하십시오. 그런 다음 푸시 할 때 값을 함께 추가하도록 할 수 있는지 확인하십시오. –

답변

0

우선 멀티 터치를 사용하도록 설정해야합니다. 이 버튼 모두에 대해 하나의 수신기를 만듭니다. 현재 수행중인 방법 중 하나 : 현재 눌려진 버튼을 저장할 테이블을 만듭니다. event.phase에서 == "started"테이블에 event.phase == "ends"버튼을 추가하십시오. 그런 다음 데이터를 처리하려면 테이블을 반복하고 값/동작 또는 원하는 것을 테이블에 항목이있는 단추에서 가져옵니다.

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) 

값 대신에 printOutput 함수에서 호출 할 함수를 지정할 수 있습니다. 또한 버튼 객체를 테이블의 키로 추가하여 쉽게 제거 할 수 있습니다. 또한 터치 로직을 더 복잡하게 만들 수도 있습니다 (포커스 추가 등) 또한 테이블 수신기를 사용하는 것이 좋습니다.