如何使用事件找出手指何时离开图像区域?例如,当您解锁iphone时,但是将手指移动离滑块太远(触摸并移动一点后 - 手指仍然触摸屏幕,而不是滑块)它会跳回到开头。当我在if语句中使用event.phase ==“ends”时,图像不会返回到指定的位置,除非我的手指仍然在图像上“打开”时放开屏幕。基本上,当手指离开图像区域时,如何将图像返回到某个点?
答案 0 :(得分: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)
答案 1 :(得分: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