代码之家  ›  专栏  ›  技术社区  ›  Rehan Haider

如何彻底处理画架画布?

  •  0
  • Rehan Haider  · 技术社区  · 7 年前

    我正在开发一个ReactJS应用程序,在这个应用程序中,我使用EASELJS处理多幅画布,在同一个页面上,我必须根据不同的条件添加和删除不同的画布,以呈现不同的视图。甚至在移除画布后,使用以下代码来释放画布组件

    createjs.Touch.disable(this.stage);
    this.stage.removeAllChildren();
    this.stage.removeAllEventListeners();
    this.stage.enableDOMEvents(false);
    

    一些事件正在触发。在使用应用程序一段时间后,它开始使用大量的处理和内存。在查看了chrome开发人员工具中的性能选项卡之后,我开始了解到每一个画布都会调用一个计时器事件。检查完代码后,我才知道

    this.stage.enableMouseOver();

    正在设置 setInterval 即使调用了以上所有代码,计时器也不会被删除,我找不到任何方法来删除它。

    有人能帮我把它处理掉吗?

    提前谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   Lanny    7 年前

    这个 enableMouseOver 方法被记录为从一个阶段添加和删除功能。通过 0 作为频率,应清除间隔。

    stage.enableMouseOver(0);
    

    来自 documentation :

    启用或禁用(通过传递0的频率)

    频率:可选参数,指定每秒广播鼠标悬停/悬停事件的最大次数。设置为0可完全禁用鼠标悬停事件。

    我在代码上做了一个快速传递,它确实消除了间隔。