Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.12.2015, 10:28
Аспирант
Отправить личное сообщение для serebann Посмотреть профиль Найти все сообщения от serebann
 
Регистрация: 22.12.2015
Сообщений: 38

Нажатие кнопки = генерация числа, отпускание кнопки = остановка генерации числа.
Помогите пож. освоил немного php, но мне больше понравился javascript
PHP пока в сторону.
Мне необходимо сделать так чтобы:

При нажатии на кнопку начинало генерироваться число от 0 до 1000
Число должно крутиться в цикле от 0 до 1000 пока пользователь не отпустит кнопку.

Результат с генерированного числа на момент отпускания кнопки должен выводиться на экран.
Желательно чтоб цикл генерации числа был виден пользователям в процессе.

Могу реализовать просто генерацию числа на php но мне это не подходит.

Последний раз редактировалось serebann, 22.12.2015 в 10:33.
Ответить с цитированием
  #2 (permalink)  
Старый 22.12.2015, 12:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

анимация числа на js
serebann,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .time{
    background-color: rgb(51, 153, 0);
    color: rgb(102, 255, 255);
    padding: 4px 8px;
    font-size: 24px;
    border-radius: 4px;
  }

  </style>
</head>

<body>
  <input id="go" name="" type="button" value="go" >
  <span class="time">0</span>

  <script>
function timer(b) {
    var c = true;
    return {
        stop: function() {
            c = false
        },
        play: function() {
            var d = performance.now();
            c = true;
            requestAnimationFrame(function e(a) {
                a = (a - d) / b.duration;
                1 < a && (a = 1);
                b.elem.innerHTML = b.from + (b.to - b.from) * a | 0;
                c && 1 == a && (d = performance.now());
                c && requestAnimationFrame(e)
            })
        }
    }
};
var span = document.querySelector('.time'),
    but = document.querySelector('#go'),
    anim = timer({
        from : 0,
        to : 1000,
        duration: 5 * 1000,
        elem : span
    });


  but.addEventListener('mousedown', anim.play);
  but.addEventListener('mouseup', anim.stop);
</script>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 22.12.2015, 14:52
Аспирант
Отправить личное сообщение для serebann Посмотреть профиль Найти все сообщения от serebann
 
Регистрация: 22.12.2015
Сообщений: 38

Ну а можно просто с генерировать случайное число в интервале от 0 до 1000

И на этом всё, сипасибо.

Последний раз редактировалось serebann, 22.12.2015 в 15:01.
Ответить с цитированием
  #4 (permalink)  
Старый 22.12.2015, 15:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

serebann,
setTimeout,Math.random, clearTimeout
Ответить с цитированием
  #5 (permalink)  
Старый 22.12.2015, 15:26
Аспирант
Отправить личное сообщение для serebann Посмотреть профиль Найти все сообщения от serebann
 
Регистрация: 22.12.2015
Сообщений: 38

По подробнее пожалуйста.

Последний раз редактировалось serebann, 24.12.2015 в 18:20.
Ответить с цитированием
  #6 (permalink)  
Старый 22.12.2015, 17:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

анимация случайного числа в диапазоне от и до на js
serebann,

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .time{
    background-color: rgb(51, 153, 0);
    color: rgb(102, 255, 255);
    padding: 4px 8px;
    font-size: 24px;
    border-radius: 4px;
    text-align: center;
    width: 60px;
  }

  </style>
</head>

<body>
  <input id="go" name="" type="button" value="go" >
  <div class="time">0</div>

  <script>
function timer(b) {
    var c = true;
    return {
        stop: function() {
            c = false
        },
        play: function() {
            var d = performance.now();
            c = !0;
            requestAnimationFrame(function e(a) {
                a = (a - d) / b.duration;
                1 < a && (a = 1);
                c && 1 == a && (d = performance.now(),b.elem.innerHTML = b.from + (b.to - b.from + 1) * Math.random() | 0);
                c && requestAnimationFrame(e)
            })
        }
    }
};
var span = document.querySelector('.time'),
    but = document.querySelector('#go'),
    anim = timer({
        from : 0,
        to : 1000,
        duration: 40,
        elem : span
    });


  but.addEventListener('mousedown', anim.play);
  but.addEventListener('mouseup', anim.stop);
</script>
</body>
</html>

Последний раз редактировалось рони, 22.12.2015 в 18:02.
Ответить с цитированием
  #7 (permalink)  
Старый 22.12.2015, 19:32
Аспирант
Отправить личное сообщение для serebann Посмотреть профиль Найти все сообщения от serebann
 
Регистрация: 22.12.2015
Сообщений: 38

Большое спасибо.
Ответить с цитированием
  #8 (permalink)  
Старый 24.12.2015, 18:19
Аспирант
Отправить личное сообщение для serebann Посмотреть профиль Найти все сообщения от serebann
 
Регистрация: 22.12.2015
Сообщений: 38

Поставил перед собой другую задачу.
Я хочу чтоб через каждые 10 секунд генерировалось случайное число в диапозоне от 0 до 10000
Результат с генерированного числа записывался в переменную sum , а
после чтоб автоматически запускалась анимация.
Генерация числа должна происходить в фоновом режиме.
Начинаю по не многу вникать в javascript, но я только второй день изучаю его.
Вот материал с которым я работаю:
<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <style>
  #brick {
  width: 10px;
  height: 20px;
  background: #EE6B47;
  position: relative;
  cursor: pointer;
}
#path {
  outline: 1px solid #E8C48E;
  width: 810px;
  height: 20px;
}
  </style>
  <script src="https://js.cx/libs/animate.js"></script>
</head>
<body>
  <div id="path">
    <div id="brick"></div>
  </div>
  <script>
  var sum = 400;
    function makeEaseOut(timing) {
      return function(timeFraction) {
        return 1 - timing(1 - timeFraction);
      }
    }
    function bounce(timeFraction) {
      for (var a = 0, b = 1, result; 1; a += b, b /= 2) {
        if (timeFraction >= (7 - 4 * a) / 11) {
          return -Math.pow((11 - 6 * a - 11 * timeFraction) / 4, 2) + Math.pow(b, 2)
        }
      }
    }
    var bounceEaseOut = makeEaseOut(bounce);
    brick.onclick = function() {
      animate({
        duration: 5000,
        timing: bounceEaseOut,
        draw: function(progress) {
          brick.style.left = progress * sum + 'px';
        }
      });
    };
  </script>

</body>
</html>

Последний раз редактировалось serebann, 24.12.2015 в 18:28.
Ответить с цитированием
  #9 (permalink)  
Старый 24.12.2015, 18:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

serebann,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #10 (permalink)  
Старый 24.12.2015, 18:30
Аспирант
Отправить личное сообщение для serebann Посмотреть профиль Найти все сообщения от serebann
 
Регистрация: 22.12.2015
Сообщений: 38

Сообщение от рони Посмотреть сообщение
serebann,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Готово, отформатировал, не знал раньше как это делается.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск