If we want to know if user has double-tapped the screen, to use Tap Detection is better.
Example shown as below:
local function buttonListener( event )
if ( event.numTaps == 1 ) then
print( "single-tapped" )
runSingleTappedAction()
elseif ( event.numTaps == 2 ) then
print( "double-tapped" )
runDoubleTappedAction()
else
return true
end
end
local myButton = display.newRect( 160, 240, 120, 60 )
myButton:addEventListener( "tap", buttonListener )
For double-tapped, it will happen following single-tapped event.That is, it will execute runSingleTappedAction() first, and then execute runDoubleTappedAction().
What if we do not want to execute runSingleTappedAction() for double-tapped event?
To achieve that, we should wait for a while before running action, since we need to confirm if it is single-tapped or double-tapped.
Example shown below:
local tapCount=0
local timeId = nil
function runTapAction( event )
if ( tapCount == 1 ) then
print( "single-tapped" )
runSingleTappedAction()
elseif ( tapCount == 2 ) then
print( "double-tapped" )
runDoubleTappedAction()
end
end
local function buttonListener( event )
tapCount = event.numTaps
if(timeId ~= nil) then
timer.cancel( timeId )
end
timeId = timer.performWithDelay( 200, runTapAction,1 )
end
local myButton = display.newRect( 160, 240, 120, 60 )
myButton:addEventListener( "tap", buttonListener )
Of course, we will sacrifice the response time for single-tapped event.
沒有留言:
張貼留言