2013-05-10 86 views
1

我不知道我怎麼會檢查用戶是否已經接觸屏幕,但降持有他們的聯繫,是不動的。如果你有任何我可以去的地方,請幫忙。我一直在環顧四周,還沒有找到任何處理這件事。觸摸保持事件在Corona SDK

回答

4

您可以使用/修改此:(這是什麼羅布奇蹟說)

local holding = false 
local function enterFrameListener() 
    if holding then 
     -- Holding button 
     -- Code here 
     -- Code here 
     -- Code here 
    else 
     -- Not holding 
     -- Code here 
     -- Code here 
     -- Code here 
    end 
end 

local function touchHandler(event) 
    if event.phase == "began" then 
     display.getCurrentStage():setFocus(event.target) 
     event.target.isFocus = true 
     Runtime:addEventListener("enterFrame", enterFrameListener) 
     holding = true 
    elseif event.target.isFocus then 
     if event.phase == "moved" then 
     elseif event.phase == "ended" then 
      holding = false 
      Runtime:removeEventListener("enterFrame", enterFrameListener) 
      display.getCurrentStage():setFocus(nil) 
      event.target.isFocus = false 
     end 
    end 
    return true 
end 

我相信它什麼明顯touchHandler功能是^^

1

您將需要一個觸摸監聽器添加到任何一個對象覆蓋整個屏幕,或者可以將其添加到系統的運行時間。

請參見本指南:http://docs.coronalabs.com/guide/events/detectEvents/index.html#hit

現在,有三個「階段」這些觸摸事件。當新聞開始時(「開始」),一個人如果移動他們的手指(「移動」),當他們停止觸摸時,就會有一個「結束」階段。

取決於你正在嘗試做的,如果你是說移動的東西,而按住按鈕,那麼你可以設置像一個標誌:

if event.phase == "began" then 
     pressed = true 
elseif event.phase == "ended" then 
     pressed = false 
end 

然後在任何你正在移動,你可以檢查看到「如果按下然後移動」。

+0

現在,我有一個事件偵聽工作,所以,如果我碰它處理它的功能的對象,但如果我只是按住它,就像一個簡單的按鈕,它不會連續處理它,這是我尋找的效果。如果它被推動,我希望它繼續觸發。 – 2013-05-10 00:56:31

+0

右鍵,你需要的東西就像一個運行系統「enterFrame事件」監聽器做什麼是你想做的事,監視標誌的狀態。將不會有額外的事件產生,說「我仍然堅持下來」。 – 2013-05-10 01:10:54

+0

所以像一個計時器循環和一個事件觸發一個處理變量或東西,讓計時器來處理的東西? – 2013-05-10 03:40:58