类型 事件 修订 版本 2024.3703 关键词 触摸, relativeTouch 另请参阅 MFi 控制器 (指南)
当用户与某些relativeTouch 事件适用于触摸灵敏度与显示区域无关的设备。
Relative touch 事件目前仅在 tvOS 上受支持,作为使用来自 InputDevice 的 axis 事件的替代方案
-- 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 )
-- 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 )