我目前正在使用 A-Frame 构建 WebXR (WebVR) 应用程序,但并不总是能够随身携带控制器(Oculus Touch、Vive Controls)来测试它们。有没有办法“模拟”不同控制器发出的事件?
问问题
305 次
1 回答
1
我不确定较低级别,但我对较高级别有一个想法:如果你有你的 vive 控制器,并且想要测试 oculus 触摸事件,你可以做一些映射。
我会做一个组件,拦截原始事件,并发出具有相同细节的新事件:
AFRAME.registerComponent("event-mapper", {
init: function() {
let viveEvents = ["menuup", "menudown"]
let oculusEvents = ["gripdown", "gripup"]
viveEvents .forEach((event, index) => {
this.el.addEventListener(event, (e) => {
this.el.emit(oculusEvents [index], {detail: e})
})
})
}
}
如果您希望它是“动态的”,您可以使用真正的 Map() 而不是两个数组,但在这里它似乎是多余的。
此外,通过detail
在发出的事件中包含 ,所有详细信息、值、目标也会随新事件一起传递。
因此,当您希望实体对映射事件做出反应时,您可以这样做:
<a-entity event-mapper></a-entity>
在我的小提琴中检查一下(将一些鼠标事件映射到虚构的事件上)
于 2018-06-01T16:41:07.190 回答