2012-07-20 86 views
2

如何使用事件找出手指離開圖像區域的時間?例如,當您解鎖iphone時,但將手指從滑塊移開得太遠(觸摸並稍稍移動手指後(手指仍然觸摸屏幕,但不是滑塊),它會跳回到開頭。當我在if語句中使用event.phase ==「ended」時,圖像不會返回到指定的位置,除非我在手指仍在圖像上時「放開」屏幕。基本上,當手指離開圖像區域時,如何將圖像返回到某個點?coronasdk離開圖像區域事件

+0

發佈您的代碼吧,我會看看它。您也可能會發現此頁面有幫助developer.coronalabs.com/content/events-and-listeners – ewein 2012-07-20 16:56:40

回答

0

您需要指定觸摸事件的像素範圍。如果觸摸事件超出此像素範圍,則重置圖片。

在您觸摸事件

所以做這樣的事情了觸摸的範圍是 X = 320 - > 480和y = 80 - > 280

local function onTouch(event)  
local t = event.target  
if (t.x < 320 || t.x > 480) || (t.y > 280 || t.y < 80) then 
     //reset image 
end 

//你可以試試這個,以及

local function onTouch(event)  
local t = event.target 
local phase = event.phase 
if phase == "moved" then 
    t.x = event.x - t.x0 
    t.y = event.y = t.y0 
    if (t.x < 320 || t.x > 480) || (t.y > 280 || t.y < 80) then 
    //reset image 
    end 
end 
return true 
end 

objectName:addEventListener("touch", onTouch) 
+0

這不起作用,因爲當目標超出範圍時觸摸事件不會觸發。 – Malfist 2013-01-15 02:47:40

0

您需要設置圖像進行對焦,即使在手指離開物體後,觸摸事件也會保持在物體上。

這是一個示例代碼我使用:

local function switchScreenListener(event)  
    display.getCurrentStage():setFocus(event.target) 

    if event.phase == "moved" then  
     local xBoundry = event.target.x + event.target.width/2 -- remember the reference point! 
     print ("X Boundry: " .. xBoundry .. ", Current X: " .. event.x); 
     if event.x > xBoundry then 
      print ("We swiped out.") 
      display.getCurrentStage():setFocus(nil) 
     end 
    elseif event.phase == "ended" then 
     display.getCurrentStage():setFocus(nil) 
     print ("Start: (" .. event.xStart .. ", " .. event.yStart .. "), End: (" .. event.x .. ", " .. event.y .. ")"); 

     local options = { 
      effect = "slideRight", 
      params = { 
       isMuted = isMuted 
      } 
     } 
     storyboard.gotoScene("view_alphabet", options) 
    end 
end