Как полностью утилизировать EaselJS canvas? - PullRequest
0 голосов
/ 22 мая 2018

Я работаю над приложением ReactJS, в котором я использую EaselJS для обработки нескольких полотен, на одной и той же странице мне нужно добавлять и удалять разные полотна на основе разных условий для визуализации разных видов.Даже после удаления холста, используя следующий код для удаления компонента холста

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

, некоторые события запускаются.После использования приложения в течение некоторого времени оно начинает использовать много обработки и памяти.После просмотра вкладки производительности в инструментах разработчика в Chrome я узнал, что для каждого холста, который когда-либо был добавлен, вызывается событие таймера.После проверки кода я узнаю, что

this.stage.enableMouseOver();

устанавливает таймер setInterval, который не удаляется даже после вызова всего кода выше, и я не могу найти способудалите его.

Может кто-нибудь, пожалуйста, помогите мне избавиться от него.

Заранее спасибо

1 Ответ

0 голосов
/ 23 мая 2018

Метод enableMouseOver документирован как для добавления, так и для удаления функциональности из рабочей области.Передав 0 в качестве частоты, интервал следует очистить.

stage.enableMouseOver(0);

Из документации :

Включение или отключение (путем передачичастота 0)

и

частота: необязательный параметр, задающий максимальное количество раз в секунду для трансляции событий наведения мыши на выход.Установите 0, чтобы полностью отключить указатель мыши на событиях.

Я сделал быстрый проход по коду, и он определенно удаляет интервал.

...