Сохраните возвращаемое значение от вызова до L.Util.requestAnimFrame()
, что происходит здесь .
Добавьте новый метод с именем snakePause
или snakeStop
или что-то в этом роде и вызовите L.Util.cancelAnimFrame
со значением, сохраненным ранее.При необходимости добавьте проверки работоспособности (проверьте, действительно ли сохранено значение и т. Д.).
Добавьте другой метод с именем snakeResume
или что-то в этом роде и вызовите L.Util.requestAnimFrame()
, чтобы перезапустить отложенные вызовы на this._snake()
,Добавьте проверки работоспособности, чтобы несколько вызовов на snakeResume
не оказывали вредного воздействия (убедитесь, что нет сохраненного возвращаемого значения из предыдущего requestAnimFrame
и т. Д.).
Приостановка и возобновление - это проблема чисто таймеров.и к нему следует обращаться только с requestAnimFrame
и cancelAnimFrame
, обращая внимание на любые возможные условия гонки.Нет никакой необходимости связываться с данными, кроме строго необходимых (сохраненные значения для отложенных вызовов и сохраненное значение performance.now
для определения времени роста линии).