touch

类型 事件
修订版 发行版 2024.3703
关键词 touch
另请参阅 轻触/触控/多点触控(指南)

概述

当用户的手指触碰屏幕时,会生成命中事件并分发给显示层次结构中的显示对象。只有与命中位置(手指在屏幕上的位置)相交的对象才能成为接收事件的候选对象。

多点触控事件是对单点触控事件的扩展。多点触控通过 system.activate() API 启用。

属性

event.id

event.name

event.phase

event.pressure

event.target

event.time

event.x

event.xStart

event.xDelta

event.y

event.yStart

event.yDelta

示例

函数监听器
local object = display.newImage( "ball.png" )
object.id = "ball object"

local function onObjectTouch( event )
    if ( event.phase == "began" ) then
        print( "Touch event began on: " .. event.target.id )
    elseif ( event.phase == "ended" ) then
        print( "Touch event ended on: " .. event.target.id )
    end
    return true
end
object:addEventListener( "touch", onObjectTouch )
表格监听器 1
local object = display.newImage( "ball.png" )
object.id = "ball object"

local function onObjectTouch( self, event )
    if ( event.phase == "began" ) then
        print( "Touch event began on: " .. self.id )
    end
    return true
end 

object.touch = onObjectTouch
object:addEventListener( "touch", object )
表格监听器 2
local object = display.newImage( "ball.png" )
object.id = "ball object"

function object:touch( event )
    if ( event.phase == "began" ) then
        print( "Touch event began on: " .. self.id )
    end
    return true
end 
object:addEventListener( "touch", object )
综合
local object = display.newImage( "ball.png" )
object.id = "ball object"

function object:touch( event )
    if ( event.phase == "began" ) then
        print( "Touch event began on: " .. self.id )

        -- Set touch focus
        display.getCurrentStage():setFocus( self )
        self.isFocus = true
    
    elseif ( self.isFocus ) then
        if ( event.phase == "moved" ) then
            print( "Moved phase of touch event detected." )

        elseif ( event.phase == "ended" or event.phase == "cancelled" ) then

            -- Reset touch focus
            display.getCurrentStage():setFocus( nil )
            self.isFocus = nil
        end
    end
    return true
end 
object:addEventListener( "touch", object )