我创建了一个带有three.js的应用程序,有2个渲染器(1个画布和1个div(css渲染器))。 css渲染器位于画布的顶部,我想将任何类型的事件传递给后面的canvas元素。到目前为止,我没有创建调度员......
到目前为止我尝试过:
1)
// on top element css renderer
$(this.cssRenderer.domElement).on("click mousedown mouseup mousemove focus blur keydown keyup change touchstart touchend touchmove", function ( event ) {
event.preventDefault();
event.stopImmediatePropagation();
//canvas background domelement
$(that.renderer.domElement).trigger(event);
});
2)
$(this.cssRenderer.domElement).on("click mousedown mouseup mousemove focus blur keydown keyup change touchstart touchend touchmove", function ( event ) {
event.preventDefault();
event.stopImmediatePropagation();
that.renderer.domElement.dispatchEvent(event.originalEvent);
});
在案例2中,我收到以下错误:
未捕获的InvalidStateError:无法执行'dispatchEvent' 'EventTarget':事件已经发送。
我还尝试复制对象或在一段时间后传递它但是似乎没有任何效果。 我没有做过类似的事情,所以我想要一些帮助或指导。
答案 0 :(得分:0)
您不能将event
传递给触发器函数,因为event是一个对象,触发器需要一个字符串作为参数。
相反,请尝试传递event.type
:
$(that.renderer.domElement).trigger(event.type);
JSFiddle(或with mouse coordinates)
要传递鼠标坐标,我传递一个对象(鼠标)以及事件类型。