События
- Подписка на события плеера
- Типы событий
- События предварительной загрузки
- Удаление обработчика события
- Удаление всех обработчиков событий
В 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, на которые можно подписываться:
Тип события | Описание |
---|---|
| Изменился статуса плеера. При наступлении этого события в функцию-обработчик передается новый статус плеера:
|
| Началось воспроизведение аудиофайла. |
| Воспроизведение было остановлено. |
| Воспроизведение было поставлено на паузу. |
| Обновилась позиция воспроизведения. В функцию-обработчик передается объект, содержащий следующие свойства:
Все значения указываются в секундах. |
| Воспроизведение аудиофайла завершено. |
| Началась загрузка аудиофайла. |
| Загрузка аудиофайла завершена. |
| Изменилось значение громкости. Обработчику события передается новое значение громкости. |
| Возникла ошибка при воспроизведении. Функции-обработчику передается сообщение об ошибке. |
| Возникла ошибка при инициализации плеера. |
| Произошло переключение между текущим и предзагруженным аудиофайлами (в момент работы с текущим файлом была вызвана команда playPreloaded()) |
Тип события | Описание |
---|---|
| Изменился статуса плеера. При наступлении этого события в функцию-обработчик передается новый статус плеера:
|
| Началось воспроизведение аудиофайла. |
| Воспроизведение было остановлено. |
| Воспроизведение было поставлено на паузу. |
| Обновилась позиция воспроизведения. В функцию-обработчик передается объект, содержащий следующие свойства:
Все значения указываются в секундах. |
| Воспроизведение аудиофайла завершено. |
| Началась загрузка аудиофайла. |
| Загрузка аудиофайла завершена. |
| Изменилось значение громкости. Обработчику события передается новое значение громкости. |
| Возникла ошибка при воспроизведении. Функции-обработчику передается сообщение об ошибке. |
| Возникла ошибка при инициализации плеера. |
| Произошло переключение между текущим и предзагруженным аудиофайлами (в момент работы с текущим файлом была вызвана команда 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
. Ниже перечислены все события предварительной загрузки:
Тип события | Описание |
---|---|
| Началась предварительная загрузка аудиофайла. |
| Загружен новый фрагмент аудиофайла. |
| Предварительная загрузка была остановлена. |
| Предварительная загрузка завершена. |
| Возникла ошибка во время предварительной загрузки. |
Тип события | Описание |
---|---|
| Началась предварительная загрузка аудиофайла. |
| Загружен новый фрагмент аудиофайла. |
| Предварительная загрузка была остановлена. |
| Предварительная загрузка завершена. |
| Возникла ошибка во время предварительной загрузки. |
Пример
Событие «остановка предварительной загрузки»
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();