类型 事件 修订 版本 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 )