Как вызвать больше раз мою внутреннюю функцию setInterval () внутри цикла? (конкретная проблема)

Я борюсь с функцией, которую вызываю в setInterval. В частности, я хотел бы вспомнить свою функцию рендеринга, которая рисует разные линии, начиная с разных точек (с учетом набора значений в массиве), но поскольку я повторяю эти значения в цикле, кажется, что я могу запустить первый setInterval, когда i = 0, но тогда я не могу остановить его, а затем перезапустить, когда i = 1 ecc ... Как я могу решить эту проблему?

 var degree= [2,0,3,1];
function choose_velocity(degree) {
  let v0; // please give a better name
  for(let i = 0;i < degree.length; i++) {
    var difference = Math.abs(degree[i+1] - degree[i]);
    if (difference === 1) { // always use triple equal (it will compare the type and the value as well
      v0 = 25;
    }
    if (difference === 2) {
      v0 = 36;
    }
    if (difference === 3) {
      v0 = 44;
    }
    if (difference === 4) {
      v0 = 51;
    }
    if (difference === 5) {
      v0 = 57;
    }
    if (difference === 6) {
      v0 = 62;
    }

    if (degree[i+1] - degree[i] < 0) {
      invert_sign = true; // try to use camelCase convention in Javascript
    }

    StartInterval(0.2); // don't name your function with Pascal convention unless you're creating a Constructor function
    console.info("entro convelocità", v0);
  }
}

function StartInterval(frequency) {
  var clear = setInterval(function() {
  render( t += 0.03, clear, invert_sign);
  }, frequency);
}

Код Codepen здесь

Я искал здесь решение, данное в прошлом, но не смог решить свою проблему, поэтому проявите терпение. В любом случае спасибо заранее! :)

Привет, Давиде, я рассмотрел ваш вопрос, поскольку он требует редактирования, поскольку проблема ясна - StartInterval не запускается во второй раз, но заголовок и описание в лучшем случае трудно читать. Вот несколько вещей, которые стоит попробовать: я бы поместил вызов setInterval в ваш основной цикл и переместил бы всю логику «выбора скорости» внутри вашей функции рендеринга. Также помните об ограничениях, developer.mozilla.org/en-US/docs/Web/API/….

hector-j-rivas 22.12.2018 22:44

Поскольку вы имеете дело с графической анимацией, решение просто прекратить использовать setInterval. Вы не ускоряете анимацию, вызывая ее рендеринг с более высокой частотой, вы делаете это, увеличивая переменную скорость, которая будет отвечать за увеличение переменных coords, но рендеринг всегда должен запускаться с регулярным интервалом (макс. 60 кадров в секунду или ниже. несколько минут 15 после того, как у мозга недостаточно информации, чтобы заставить его двигаться). И лучшая временная функция, которую мы должны регулировать, это оказывать - это requestAnimationFrame.

Kaiido 23.12.2018 00:23

Если я использую requestAnimationFrame, сохраню ли я первую линию, нарисованную на холсте, при вызове cancelAnimationFrame?

Davide Mori 23.12.2018 07:38

Более того, дело в том, что мне нужно увеличить переменную t, чтобы применить уравнения движения снаряда, я не знаю, как поступить таким образом ...

Davide Mori 23.12.2018 08:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
45
0

Другие вопросы по теме