Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.12.2020, 14:27
Профессор
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 151

Как сделать плавный audio fadeIn и fadeout на JS?
Здравствуйте. Нужно сделать fadeIn и fadeout музыки. На jQ есть отличный метод animate, который умеет это делать плавно и очень удобный:

https://codepen.io/CryNet/pen/VwKprLG

Есть что-то похожее на JS? Нужно добиться такого же функционала, но на JS (проект на React). Может вы видели портированный метод animate из jQ на числом JS? Аналогичный метод на JS не умеет в музыку
Ответить с цитированием
  #2 (permalink)  
Старый 16.12.2020, 15:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от CryNet
animate из jQ на числом JS?
https://learn.javascript.ru/js-anima...tura-animatsii
Ответить с цитированием
  #3 (permalink)  
Старый 16.12.2020, 16:22
Профессор
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 151

Сообщение от рони Посмотреть сообщение
https://learn.javascript.ru/js-anima...tura-animatsii
Спасибо. Пробую. Правда пока не очень получается
Ответить с цитированием
  #4 (permalink)  
Старый 16.12.2020, 16:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от CryNet
Правда пока не очень получается
???
Ответить с цитированием
  #5 (permalink)  
Старый 16.12.2020, 16:39
Профессор
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 151

Сообщение от рони Посмотреть сообщение
https://learn.javascript.ru/js-anima...tura-animatsii
Сообщение от рони Посмотреть сообщение
???
Ну, вроде получилось:

https://drive.google.com/drive/folde...sW?usp=sharing
Ответить с цитированием
  #6 (permalink)  
Старый 16.12.2020, 16:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

CryNet,
нет смысла изменять плавность анимации в данном случае
timing: function(timeFraction) {
        return Math.pow(timeFraction, 2);
      },

можно просто
timing: function(timeFraction) {
        return timeFraction
      },
Ответить с цитированием
  #7 (permalink)  
Старый 16.12.2020, 17:04
Профессор
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 151

Сообщение от рони Посмотреть сообщение
CryNet,
нет смысла изменять плавность анимации в данном случае
timing: function(timeFraction) {
        return Math.pow(timeFraction, 2);
      },

можно просто
timing: function(timeFraction) {
        return timeFraction
      },
Спасибо. Правда я пока не сильно понимю как сделать fadeOut, то есть наоборот - уменьшать громкость

Последний раз редактировалось CryNet, 16.12.2020 в 17:08.
Ответить с цитированием
  #8 (permalink)  
Старый 16.12.2020, 17:20
Профессор
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 151

Сообщение от рони Посмотреть сообщение
CryNet,
нет смысла изменять плавность анимации в данном случае
timing: function(timeFraction) {
        return Math.pow(timeFraction, 2);
      },

можно просто
timing: function(timeFraction) {
        return timeFraction
      },
Разобрался:

function animate(options) {

var start = performance.now();

requestAnimationFrame(function animate(time) {

// timeFraction от 0 до 1
var timeFraction = (time - start) / options.duration;
if (timeFraction > 1) timeFraction = 1;



// текущее состояние анимации
var progress = 1 - options.timing(timeFraction)

console.log(progress)

options.draw(progress);

if (timeFraction < 1) {
requestAnimationFrame(animate);
}

});
}
Ответить с цитированием
  #9 (permalink)  
Старый 16.12.2020, 17:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от CryNet
var progress = 1 - options.timing(timeFraction)
не надо так делать! есть функция draw в ней и меняйте
draw: function(progress) {
        console.log(progress);
        audio.volume =  1 - progress;
      }
Ответить с цитированием
  #10 (permalink)  
Старый 16.12.2020, 17:32
Профессор
Отправить личное сообщение для CryNet Посмотреть профиль Найти все сообщения от CryNet
 
Регистрация: 02.01.2019
Сообщений: 151

Сообщение от рони Посмотреть сообщение
не надо так делать! есть функция draw в ней и меняйте
draw: function(progress) {
        console.log(progress);
        audio.volume =  1 - progress;
      }
Спасибо. Так даже лучше
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать запрос к API сайта на js AnteFil Элементы интерфейса 3 01.08.2020 20:21
Как сделать вертикальное меню с анимацией? Wimko jQuery 3 28.06.2020 19:31
как сделать проверку полей на js boris2000 Элементы интерфейса 12 18.11.2014 12:15
Кнопка старт/стоп в js как сделать? Александр_1997 Events/DOM/Window 12 07.02.2014 16:03
написал коряво плагин на JS - он работает, а как сделать лучше? Теги: Массив, replace alexben Общие вопросы Javascript 2 11.02.2012 15:21