0

我正在使用 Two.js 在 Angular 应用程序中绘制 svg 图像。

在 two.js 中绘制 svg(其中包含一些元素)后,我将事件侦听器添加到它的元素中,如下所示:

this.courtRenderer.update(); //after this command two.js draw the svg

for (const trajectory of this.trajectories) {
  trajectory.renderedLine._renderer.elem.addEventListener('mouseenter', (event) => {
    this.onRenderedLineMouseEnter(event, this.trajectories.filter((selectedTrajectory) =>
    selectedTrajectory.renderedLine.id === trajectory.renderedLine.id));
  }, false);
  trajectory.renderedLine._renderer.elem.addEventListener('mouseleave', () => {
    this.onRenderedLineMouseLeave(this.trajectories.filter((selectedTrajectory) =>
    selectedTrajectory.renderedLine.id === trajectory.renderedLine.id));
  }, false);
}

然后我有一个处理程序,它改变线宽和线颜色,并向服务发送信息以在鼠标位置打开一个弹出窗口。

    private onRenderedLineMouseEnter(event, trajectories){
    let renderedLine;
    for (const trajectory of trajectories){
      renderedLine = trajectory.renderedLine;
      renderedLine.linewidth = renderedLine.linewidth * this.appConfig.courtRenderer.highlightedTrajectoryWeight;
      renderedLine.stroke = this.appConfig.courtRenderer.colors.highlightedTrajectory;
    }
      this.courtRenderer.update();
      const popupPosition = new PopupPosition(renderedLine.id, event.layerX, event.layerY);
      this.virtualCourtService.selectShot(popupPosition);
    }

在我在浏览器中运行控制台(F12)之前它不起作用......我不知道为什么,但正如我所说,当我在谷歌浏览器上单击 F12 时,一切正常......为什么不之前?

编辑:当我在方法 onRenderedLineMouseEnter 中设置断点并且我在行断点上的 mouseenter 被捕获,然后它在没有 Inspector 的情况下工作。

我还在此方法中添加了一些 console.log,并且使用 Inspector 和不使用 Inspector 都会触发代码,但只有使用 Inspector(或使用断点)才会进行 UI 更改。

4

1 回答 1

0

我观察到了其他事情 - 当浏览器窗口处于非活动状态时,处理程序工作正常,但是当我单击浏览器窗口并且它处于活动状态时,它就无法工作。这就是我写关于检查器的原因——这个工具导致检查器是活动窗口而浏览器内容是非活动的。 在此处输入图像描述

于 2020-08-26T08:08:12.690 回答