如何彻底处置 EaselJS 画布?

Posted

技术标签:

【中文标题】如何彻底处置 EaselJS 画布?【英文标题】:How to completely dispose EaselJS canvas? 【发布时间】: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 计时器,即使在调用上述所有代码后也没有被删除,我找不到任何删除它的方法。

谁能帮我摆脱它。

提前致谢

【问题讨论】:

【参考方案1】:

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

stage.enableMouseOver(0);

来自documentation:

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

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

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

【讨论】:

谢谢,我试图找到一种方法来删除它但错过了 :( 我想请求一个功能,一个功能来处理附加到画布的所有事件以正确处理它,而不是分离不同的事件个人:) 随时在github.com/CreateJS/EaselJS/issues 记录请求。干杯!

以上是关于如何彻底处置 EaselJS 画布?的主要内容,如果未能解决你的问题,请参考以下文章

画布动画作为 div 背景 - EaselJS

使用 EaselJS 围绕画布构建坐标系

为啥我的位图图像使用 EaselJS 在画布中出现别名?

更改 EaselJS 画布宽度而不缩放内容

EaselJS spritesheet 动画在画布上不可见,但没有错误

EaselJS 中的动态舞台名称