【发布时间】:2022-02-01 07:58:06
【问题描述】:
我一直在使用fabricjs 开发threejs 鼠标光线投射,它现在可以工作here 但问题是如果我使用的是正在使用触摸的智能手机,对象不会移动。我应该为触摸事件创建另一个事件侦听器吗?还是应该使用鼠标事件正常工作?
这是我如何移动对象
if (e.target !== this.upperCanvasEl) {
var positionOnScene = getPositionOnScene(container, e);
pointer.x = positionOnScene.x;
pointer.y = positionOnScene.y;
}
这是getPositionOnScene 函数
function getPositionOnScene(sceneContainer, evt) {
var array = getMousePosition(container, evt.clientX, evt.clientY);
onClickPosition.fromArray(array);
var intersects = getIntersects(onClickPosition, scene.children);
if (intersects.length > 0 && intersects[0].uv) {
var uv = intersects[0].uv;
intersects[0].object.material.map.transformUv(uv);
return {
x: getRealPosition('x', uv.x),
y: getRealPosition('y', uv.y)
}
}
return null
}
谁能帮助我?任何想法都会很有帮助
【问题讨论】:
-
触摸设备不遵循通常的鼠标事件,因为它们没有鼠标。相反,您必须使用TouchEvent API,它与鼠标非常相似,但可以适应触摸的差异。所以你必须做
addEventListener("touchstart", callback)。它还支持"touchend" and "touchmove"。 -
嘿你怎么看这个?owayo.com/konfigurator_html/…这也使用touchevent吗?
标签: javascript three.js