【问题标题】:How to completely dispose EaselJS canvas?如何彻底处置 EaselJS 画布?
【发布时间】:2018-11-01 04:47:59
【问题描述】:

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

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

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

this.stage.enableMouseOver();

正在设置一个 setInterval 计时器,即使在调用上述所有代码后也没有被删除,我找不到任何删除它的方法。

谁能帮我摆脱它。

提前致谢

【问题讨论】:

    标签: javascript html5-canvas createjs easeljs


    【解决方案1】:

    记录了enableMouseOver 方法,用于在舞台中添加和删除功能。通过传递0 作为频率,应该清除间隔。

    stage.enableMouseOver(0);
    

    来自documentation

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

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

    我对代码做了一个快速传递,它肯定会删除间隔。

    【讨论】:

    • 谢谢,我试图找到一种方法来删除它但错过了 :( 我想请求一个功能,一个功能来处理附加到画布的所有事件以正确处理它,而不是分离不同的事件个人:)
    • 随时在github.com/CreateJS/EaselJS/issues 记录请求。干杯!
    猜你喜欢
    • 2020-07-05
    • 2023-03-14
    • 1970-01-01
    • 2023-03-24
    • 2013-03-29
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多