2017-03-07 11 views
0

안녕하세요 저는 게임을하고 있는데 하나의 물건이 있습니다. 이 객체에는 터치 이벤트가 있습니다. 터치가 250ms보다 적더라도 터치 확인을 추가했습니다. 그렇지 않으면 탭으로 간주합니다. 탭 이벤트에서 저는 10 포인트 씩 값을 증가시킵니다. 나는 객체의 값이 눌려지면 값을 1 씩 감소시키고 싶습니다. 코드를 추가했지만 한 번만 수행합니다.Corona SDK에서 길게 누르면 값이 감소합니다.

질문은 어떻게 터치 이벤트가 기록되는 동안 값을 계속 감소시킬 것인가입니다. 코드는 아래 참조 용으로 제공됩니다.

local function countTaps(event) 
if event.phase == "began" then 
beganTime = event.time 
elseif event.phase == "ended" then 
endedTime = event.time 
if (endedTime - beganTime) < 250 then 
    climbUp() 
    return true 
else 
    climbDown() 
end 
end        

그러나이 코드는 완료되면 탭/터치를 결정합니다. 더 나은 런타임 대안이 될 수있는 것

답변

0

터치 이벤트가 시작되면 값을 변경하려는 빈도로 타이머를 설정하십시오. 타이머가 작동하면 카운터 (어쩌면 climbDown())를 변경하는 함수를 호출하십시오.

터치가 끝나면 타이머를 취소하십시오. 이 버튼이 더 이상 버튼에 없더라도이 터치의 끝을 감지하고 싶을 것입니다. this guide에 설명 된대로 무대에서 초점을 관리하여이 작업을 수행 할 수 있습니다.

자세한 내용은 timer.*의 설명서 (timer.performWithDelay()timer.cancel())를 참조하십시오. 또한

+0

관한 정보 [타이머 (https://docs.coronalabs.com/api/library/timer/performWithDelay.html), timer.pause() (https://docs.coronalabs.com/ api/library/timer/pause.html) 및 [timer.resume()] (https://docs.coronalabs.com/api/library/timer/resume.html) 함수가 유용 할 것입니다. – ldurniat

+0

명시된대로 추가 할 때 한 번만 실행됩니다. –

+0

옵션 반복 인수는 0의 값을 지정 또는 -1 경우가 반복적으로 발생하게 performWithDelay()''에있다. 문서에서 :'timer.performWithDelay (delay, listener [, iterations])'. 예를 들어, 200ms (대략)마다 'climbDown'을 호출하려면'timer.performWithDelay (200, climb down, -1)'을 사용합니다. – GoojajiGreg

관련 문제