FutureAnge1
@FutureAnge1
Педалирую потихоньку...

Как избавиться от утечки памяти?

Подскажите, что я делаю не так?
При вызове нового цикла событием, старый не удаляется. При этом создаётся новое лексическое окружение при каждом новом срабатывании события, так что переменные координат мыши тоже каждый раз создаются завово и системе приходит огромный БУМ!!! Научите, как правильно...

let minion1 = new Minion(10, 10, 20, 20, 1);
			let mainLoop;
			minion1.render();

			field.onmousemove = function(mouse) {
				mainLoop = null;
				let mouseX = mouse.pageX - parseInt(field.style.margin) - parseInt(field.style.border);
				let mouseY = mouse.pageY - 43;
				mainLoop = setInterval(function() {
					canvas.clearRect(0, 0, 600, 600);
					minion1.moveTo(mouseX);
					minion1.render();
				}, 30);
			};
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Fragster
@Fragster
помогло? отметь решением!
Забыл вызвать clearInterval(mainLoop), но вообще непонятно, зачем именно так сделано. Проще один условно вечный обработчик setInterval, а в onmousemove только данные менять.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы