relativeTouch

类型 事件
修订 版本 2024.3703
关键词 触摸, relativeTouch
另请参阅 MFi 控制器 (指南)

概述

当用户与某些触控设备交互时,会生成并分派一个 relative touch 事件。普通 touch 事件表示与屏幕或可物理触摸的显示对象的交互,而 relativeTouch 事件适用于触摸灵敏度与显示区域无关的设备。

注意事项

Relative touch 事件目前仅在 tvOS 上受支持,作为使用来自 InputDeviceaxis 事件的替代方案(Apple TV 遥控器).

属性

event.id

event.name

event.phase

event.time

event.x

event.y

event.tapCount

示例

函数监听器 1
-- Create text object to monitor relative touch
local touchData = display.newText( "-,- []", display.contentCenterX, display.contentCenterY, native.systemFont, 16 )
local tapCounter = display.newText( "0", display.contentCenterX, display.contentCenterY+24, native.systemFont, 16 )

-- Text update function
local function updateText( event )
    touchData.text = event.x .. "," .. event.y .. " [" .. event.phase .. "]"
    if ( event.phase == "ended" ) then
        tapCounter.text = event.tapCount
    end
end

-- Add relative touch runtime listener
Runtime:addEventListener( "relativeTouch", updateText )
函数监听器 2
-- Create a circle
local circle = display.newCircle( display.contentCenterX, display.contentCenterY, 100 )
circle:setFillColor( 0, 1, 0 )

-- Movement data
local moveX = 0
local moveY = 0
local moveScale = 0.05

-- Update movement rates when we get a new relative touch event
local function setCircleMovement( event )
    if ( event.phase == "moved" ) then
        moveX = event.x * moveScale
        moveY = event.y * moveScale
    elseif ( event.phase == "ended" or event.phase == "cancelled" ) then
        moveX = 0
        moveY = 0
        circle.x = display.contentCenterX
        circle.y = display.contentCenterY
    end
end

-- Add relative touch runtime listener
Runtime:addEventListener( "relativeTouch", setCircleMovement )

-- Update the circle's movement based on the last touch's data
local function updateCirclePosition( event )
    circle.x = circle.x + moveX
    circle.y = circle.y + moveY
end
Runtime:addEventListener( "enterFrame", updateCirclePosition )