Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Зацикленная анимация (https://javascript.ru/forum/dom-window/74778-zaciklennaya-animaciya.html)

рони 07.08.2018 18:16

Цитата:

Сообщение от Начинающий-Js-кодер
Теперь хочу спросить-внешнее прерывание в эту функцию можно добавить?

можно
if (abracadabra) requestAnimationFrame(c)

function noanimate() {abracadabra = false}

рони 07.08.2018 18:22

Начинающий-Js-кодер,
жмите 'Enter' для старт/стопа анимации
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
   #block{
    position:absolute;
    top:0;
    left:0;
    width:20px;
    height:20px;
    background:#000;
}
  </style>
   <script>
      document.addEventListener('DOMContentLoaded', function() {
         var b = document.querySelector('#block'), m = 0, n = .5, abracadabra = true;
         function c()
         {
           if (abracadabra) m += n;
           if(m == 100 || m == 0) n = -n;
           b.style.marginLeft = m + 'px';
           requestAnimationFrame(c)
         }
       requestAnimationFrame(c);
       document.addEventListener('keyup', function(event) {
       if(event.key == 'Enter') startStopAnimate();  });
       function startStopAnimate() {abracadabra = !abracadabra}
        });
   </script>
</head>

<body>


<div id="block"></div>
</body>

</html>

Начинающий-Js-кодер 07.08.2018 20:26

Рони,снова спасибо большое.

сейчас пытаюсь реализовать toggle для style.
marginLeft обозначил mL, marginRight - mR
теперь при:b.style.mL = m + 'px'; перестало работать. Почему так? Как можно обойти данную проблему?

Начинающий-Js-кодер 07.08.2018 20:28

Извиняюсь,не так.
Делаю так:
var curMargin=marginLeft;
тогда b.style.curMargin = m + 'px'; перестает работать код. почему?

рони 07.08.2018 20:33

Начинающий-Js-кодер,
b.style[curMargin] =

Начинающий-Js-кодер 07.08.2018 21:09

Понял.Спасибо большое


Часовой пояс GMT +3, время: 01:55.