跳到主要内容

空间拖拽(Spatial Drag)

概述

表示完成了一次对空间目标的单手「选择、激活、持续」动作,无论这种交互是通过间接的「注视 + 捏合」完成,还是通过直接触摸完成

触发条件

目标触发时机
空间化 2D HTML 元素在自身内容占据的 3D 空间位置被「捏住不放」后触发这套事件。
3D 容器元素在自身可交互内容占据的 3D 空间位置被「捏住不放」后触发这套事件。

心智模型

可以在 3D 空间中的任意方向上拖拽,并把目标放到空间中的任意位置。

事件类型名称

阶段DOM 事件
拖拽开始spatialdragstart
拖拽持续中spatialdrag
拖拽结束spatialdragend

React 用法

阶段JSX 属性
拖拽开始onSpatialDragStart
拖拽持续中onSpatialDrag
拖拽结束onSpatialDragEnd

原生 DOM 用法

当前限制

WebSpatial SDK 现阶段不允许在 DOM 元素(包括来自 Ref 的元素)上直接监听空间事件。

事件生命周期

「选择」过程中不触发事件;捏住不放刚开始会触发 spatialdragstart,激活后保持会持续触发 spatialdrag,松开后触发 spatialdragend

SpatialDragStartEvent 事件数据

字段单位含义坐标系
offsetX, offsetY, offsetZpx激活位置的 X、Y、Z 坐标。触发事件的空间化 2D HTML 元素(包括 3D 容器元素)对应的本地坐标系,采用左手坐标系,原点位于元素对应 2D 面片的左上角,Y 轴向下,Z 轴朝向用户。
clientX, clientY, clientZpx激活位置的 X、Y、Z 坐标。当前空间场景容器对应的全局坐标系,采用左手坐标系,原点位于空间场景背板的左上角,Y 轴向下,Z 轴朝向用户。

SpatialDragEvent 事件数据

字段单位含义
translationX, translationY, translationZpx相对于拖拽起点的偏移量。

SpatialDragEndEvent 事件数据

没有额外数据

spatialdragend 回调拿到的 SpatialDragEndEvent 对象没有额外属性。