События

  1. Подписка на события плеера
  2. Типы событий
  3. События предварительной загрузки
  4. Удаление обработчика события
  5. Удаление всех обработчиков событий

В YandexAudio API реализован собственный механизм работы с событиями. Аудиоплеер генерирует различные события, на которые можно подписываться, то есть назначать им функции-обработчики. При наступлении того или иного события в функцию-обработчик передается информация о новом состоянии плеера. Например, при наступлении события изменения громкости в функцию-обработчик передается новое значение громкости.

Подписка на события плеера

Для подписки на события плеера предназначена функция on(). В качестве аргументов ей следует передать тип события и функцию-обработчик. Например:

// Создаем плеер.
var audioPlayer = new ya.music.Audio();

// Подписка на событие изменения громкости.
audioPlayer.on(ya.music.Audio.EVENT_VOLUME, function (value) {
    console.log("Новое значение громкости: " + value);
})
Примечание.

Если функции on() первым параметром передать ' * ', то произойдет подписка сразу на все события плеера. В этом случае функции-обработчику первым параметром будет передан тип события, а вторым — новое состояние плеера:

audioPlayer.on('*', function (event, state) {
    // event - тип события, которое произошло;
    // state - новый статус плеера.
    switch (event) {
        case ya.music.Audio.EVENT_VOLUME:
           console.log("Новое значение громкости: " + state);
        ...
    }
});

В справочнике приведены все доступные методы для работы с событиями.

Типы событий

Ниже приведен список событий API, на которые можно подписываться:

Тип события Описание

ya.music.Audio.EVENT_STATE

Изменился статуса плеера. При наступлении этого события в функцию-обработчик передается новый статус плеера:

  • ya.music.Audio.STATE_INIT — плеер находится в состоянии инициализации;
  • ya.music.Audio.STATE_IDLE — плеер готов и ожидает;
  • ya.music.Audio.STATE_PLAYING — плеер проигрывает аудиофайл;
  • ya.music.Audio.STATE_PAUSED — плеер поставлен на паузу;
  • ya.music.Audio.STATE_CRASHED — не удалось инициализировать плеер.

ya.music.Audio.EVENT_PLAY

Началось воспроизведение аудиофайла.

ya.music.Audio.EVENT_STOP

Воспроизведение было остановлено.

ya.music.Audio.EVENT_PAUSE

Воспроизведение было поставлено на паузу.

ya.music.Audio.EVENT_PROGRESS

Обновилась позиция воспроизведения. В функцию-обработчик передается объект, содержащий следующие свойства:

  • duration — длительность аудиофайла;
  • loaded — длительность загруженной части;
  • position — текущая позиция воспроизведения;
  • played — общая длительность воспроизведения.

Все значения указываются в секундах.

ya.music.Audio.EVENT_ENDED

Воспроизведение аудиофайла завершено.

ya.music.Audio.EVENT_LOADING

Началась загрузка аудиофайла.

ya.music.Audio.EVENT_LOADED

Загрузка аудиофайла завершена.

ya.music.Audio.EVENT_VOLUME

Изменилось значение громкости. Обработчику события передается новое значение громкости.

ya.music.Audio.EVENT_ERROR

Возникла ошибка при воспроизведении. Функции-обработчику передается сообщение об ошибке.

ya.music.Audio.EVENT_CRASHED

Возникла ошибка при инициализации плеера.

ya.music.Audio.EVENT_SWAP

Произошло переключение между текущим и предзагруженным аудиофайлами (в момент работы с текущим файлом была вызвана команда playPreloaded())

Тип события Описание

ya.music.Audio.EVENT_STATE

Изменился статуса плеера. При наступлении этого события в функцию-обработчик передается новый статус плеера:

  • ya.music.Audio.STATE_INIT — плеер находится в состоянии инициализации;
  • ya.music.Audio.STATE_IDLE — плеер готов и ожидает;
  • ya.music.Audio.STATE_PLAYING — плеер проигрывает аудиофайл;
  • ya.music.Audio.STATE_PAUSED — плеер поставлен на паузу;
  • ya.music.Audio.STATE_CRASHED — не удалось инициализировать плеер.

ya.music.Audio.EVENT_PLAY

Началось воспроизведение аудиофайла.

ya.music.Audio.EVENT_STOP

Воспроизведение было остановлено.

ya.music.Audio.EVENT_PAUSE

Воспроизведение было поставлено на паузу.

ya.music.Audio.EVENT_PROGRESS

Обновилась позиция воспроизведения. В функцию-обработчик передается объект, содержащий следующие свойства:

  • duration — длительность аудиофайла;
  • loaded — длительность загруженной части;
  • position — текущая позиция воспроизведения;
  • played — общая длительность воспроизведения.

Все значения указываются в секундах.

ya.music.Audio.EVENT_ENDED

Воспроизведение аудиофайла завершено.

ya.music.Audio.EVENT_LOADING

Началась загрузка аудиофайла.

ya.music.Audio.EVENT_LOADED

Загрузка аудиофайла завершена.

ya.music.Audio.EVENT_VOLUME

Изменилось значение громкости. Обработчику события передается новое значение громкости.

ya.music.Audio.EVENT_ERROR

Возникла ошибка при воспроизведении. Функции-обработчику передается сообщение об ошибке.

ya.music.Audio.EVENT_CRASHED

Возникла ошибка при инициализации плеера.

ya.music.Audio.EVENT_SWAP

Произошло переключение между текущим и предзагруженным аудиофайлами (в момент работы с текущим файлом была вызвана команда playPreloaded())

Примеры

Событие «изменение состояния плеера»

// Подписываемся на событие изменения состояния плеера.
audioPlayer.on(ya.music.Audio.EVENT_STATE, function (state) {
    switch (state) {
     case ya.music.Audio.STATE_PLAYING:
         console.log("Началось воспроизведение.");
     case ya.music.Audio.STATE_ENDED:
         console.log("Воспроизведение завершено.");
     case ya.music.Audio.STATE_READY:
         console.log("Плеер готов и ожидает.");
     ...
    }
    
});

Событие «обновление позиции прогресс-бара»

// Подписываемся на событие обновления позиции прогресс-бара.
audioPlayer.on(ya.music.Audio.EVENT_PROGRESS, function (timing) {
    console.log("Загружено: " + timing.loaded);
    console.log("Текущая позиция воспроизведения: " + timing.position);
    console.log("Длительность файла: " + timing.duration);
    console.log("Общая длительность файла: " + timing.played);
});

События предварительной загрузки

Чтобы подписаться на события предварительной загрузки, в названии события следует использовать префикс ya.music.Audio.PRELOADER_EVENT. Ниже перечислены все события предварительной загрузки:

Тип события Описание

ya.music.Audio.PRELOADER_EVENT + ya.music.Audio.EVENT_LOADING

Началась предварительная загрузка аудиофайла.

ya.music.Audio.PRELOADER_EVENT + ya.music.Audio.EVENT_PROGRESS

Загружен новый фрагмент аудиофайла.

ya.music.Audio.PRELOADER_EVENT + ya.music.Audio.EVENT_STOP

Предварительная загрузка была остановлена.

ya.music.Audio.PRELOADER_EVENT + ya.music.Audio.EVENT_LOADED

Предварительная загрузка завершена.

ya.music.Audio.PRELOADER_EVENT + ya.music.Audio.EVENT_ERROR

Возникла ошибка во время предварительной загрузки.

Тип события Описание

ya.music.Audio.PRELOADER_EVENT + ya.music.Audio.EVENT_LOADING

Началась предварительная загрузка аудиофайла.

ya.music.Audio.PRELOADER_EVENT + ya.music.Audio.EVENT_PROGRESS

Загружен новый фрагмент аудиофайла.

ya.music.Audio.PRELOADER_EVENT + ya.music.Audio.EVENT_STOP

Предварительная загрузка была остановлена.

ya.music.Audio.PRELOADER_EVENT + ya.music.Audio.EVENT_LOADED

Предварительная загрузка завершена.

ya.music.Audio.PRELOADER_EVENT + ya.music.Audio.EVENT_ERROR

Возникла ошибка во время предварительной загрузки.

Пример

Событие «остановка предварительной загрузки»

audioPlayer.on(ya.music.Audio.PRELOADER_EVENT + ya.music.Audio.EVENT_STOP, 
    function () {
        console.log("Предварительная загрузка файла была остановлена."));
    }
);

Удаление обработчика события

Для удаления обработчика события предназначена функция off(). В качестве первого аргумента функции передается тип события, в качестве второго — ссылка на функцию-обработчик, которую необходимо удалить. Например:

function setVolume (data) {
   ...
}
// Подписываемся на событие изменения громкости.
audioPlayer.on(ya.music.Audio.EVENT_VOLUME, setVolume);

// Удаляем обработчик события.
audioPlayer.off(ya.music.Audio.EVENT_VOLUME, setVolume);
Примечание. Если функции off() не был передан второй аргумент, то будут удалены все обработчики для указанного типа события.

Удаление всех обработчиков событий

Для того чтобы отписаться сразу от всех событий плеера, предназначен метод clearListeners():

// Будут удалены обработчики всех событий плеера.
audioPlayer.clearListeners();