手势交互
更新时间:2021-05-27
手势交互
手势交互可根据项目需求开启或关闭,每个手势交互之间都是相对独立的存在,目前百度AR支持的手势交互有:单击、双击、长按、捏合、单指平移、双指旋转、滑动等。
滑动手势可以通过lua层回调事件实现手势操作后想要出现的效果,其它手势目前还无法获取手势操作后的回调事件,后续将逐步开放。
-- json文件配置项
"userInteraction": {
"disableAll": 0,
"disablePinch": 0,
"disableClick": 0,
"disableScroll": 0,
"disbleLongPress": 0,
"disableSingleFingerScroll": 0,
"disableTwoFingerScroll": 0,
"disableDoubleClick": 0,
"enableTouchZone":1
},
单击
单击接口 : " disableClick " : 0
双击
双击接口 : "disableDoubleClick": 0
长按
长按接口 : "disbleLongPress": 0
捏合
捏合接口 : "disablePinch": 0
单指平移
单指平移接口 : "disableSingleFingerScroll": 0
双指旋转
双指旋转接口 : "disableTwoFingerScroll": 0
滑动
- 滑动调用接口: scene.on_touch _event = function(event_type, event_x, event_y)
- event_type: EventType.Scroll | EventType.ScrollDown | EventType.ScrollUp
scene.on_touch_event = function(etype, ex, ey)
if (etype == ESCROLL_UP) then
scene.write1.particle.emit_status = "0"
scene.write2.particle.emit_status = "0"
isscroll = 0
ARLOG("ESCROLL_UP")
return
end
if (etype == ESCROLL) then
local pos = scene:unproject(ex, ey, 200)
calcuate_diff(pos.x, pos.y, pos.z)
scene.write2.particle.emitter_position = pos.x .. "," .. pos.y .. "," .. pos.z
scene.write2.particle.emit_status = "1"
return
end
end
热区设定
开启热区需要配合多个接口参数进行设置,详细请参考场景配置API。
根据项目的场景需求,开启热区的接口也可在Lua层动态配置其开关。
复位状态
双击屏幕或点击快速复位按钮,模型复现在当前最佳手机姿态屏幕位置。
- 位置及姿态初始化:通过设定复位按钮的方式(该方法仅适用于用户手势交互后,无法转动到初始位置)。
复位按钮图
-- JSON 配置点击按钮 :
{
"name": "reset",
"type": "plane",
"visible": 1,
"touchable": 1,
"material":
{
"common":
{
"defaultShaderName": "planeShader",
"textureList": [
{
"textureName": "res/texture/reset.png"
}]
}
},
"hudDisplay":
{
"marginLeft": 0.94,
"marginTop": 0.5,
"screenRatio":
{
"screenWidthRatio": 0.12
}
},
"transparentObject": 1,
"rotation": "90,0,0",
"children": []
}
-- Lua 配置 :
app:relocate_current_scene()