XRInputSourceEvent
WebXR Device API 的 XRInputSourceEvent 接口描述了在 WebXR 用户输入设备(例如手柄、注视跟踪系统或运动跟踪系统)上发生的事件。更具体地说,它们代表了 XRInputSource 状态的变化。
要了解更多关于在 WebXR 项目中处理输入的信息,请参阅文章 输入和输入源。
构造函数
XRInputSourceEvent()-
创建并返回一个新的
XRInputSourceEvent对象,其属性与提供的eventInitDict字典中的属性匹配。
实例属性
frame只读-
一个
XRFrame对象,提供有关事件发生帧的必要信息。此帧可能是在过去渲染的,而不是当前帧。因为这是一个事件帧,而不是动画帧,所以您不能在其上调用XRFrame方法getViewerPose();而是使用getPose()。 inputSource只读-
一个
XRInputSource对象,指示是哪个输入源生成了此输入事件。
实例方法
XRInputSourceEvent 接口不定义任何方法;但是,有几个方法是从父接口 Event 继承而来的。
事件类型
select-
当发送输入源完全完成一项 主要操作时,发送到
XRSession。 selectend-
当正在进行的主要操作结束,或者当具有正在进行的主要操作的输入源与系统断开连接时,发送到
XRSession。 selectstart-
当输入源开始其 主要操作时,发送到
XRSession,表示用户已开始一项命令式输入,例如按下扳机或按钮、发出语音命令、轻触触摸板等。 squeeze-
当发送输入源完全完成一项 主要挤压操作时,发送到
XRSession。 squeezeend-
当正在进行的 主要挤压操作结束,或者当具有正在进行的挤压操作的输入源断开连接时,发送到
XRSession。 squeezestart-
当输入源开始其 主要挤压操作时,发送到
XRSession,表示用户已开始抓取、挤压或握住控制器。
示例
以下代码设置了主要操作事件的事件处理器,以便在用户单击(射击/点击/等)场景中的对象时确定。
xrSession.addEventListener("select", (event) => {
let targetRayPose = event.frame.getPose(
event.inputSource.targetRaySpace,
myRefSpace,
);
if (targetRayPose) {
let hit = myHitTest(targetRayPose.transform);
if (hit) {
/* handle the hit */
}
}
});
规范
| 规范 |
|---|
| WebXR Device API # xrinputsourceevent-interface |
浏览器兼容性
加载中…