2017-03-07 44 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

另外,關於[timer](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

對於'performWithDelay()',有一​​個可選的迭代參數,如果您指定值爲0或-1,則它會重複觸發。從文檔:'timer.performWithDelay(delay,listener [,iterations])''。例如,要每200毫秒(大約)調用'climbDown',你可以使用'timer.performWithDelay(200,往下爬,-1)'。 – GoojajiGreg