Home Reference Source

main/service/AudioService.js

import { Howler } from 'link/Howler';
import { Audio } from 'model/component/Audio';
import { Logger } from 'commons/Logger';

export class AudioService {

    constructor() {
        this._logger = new Logger(AudioService.name);
    }

    update(audio) {
        if (audio.state === Audio.STATE.CREATED) {
            audio.state = Audio.STATE.BUFFERING;
            audio.sound = new Howler.Howl({
                src: [audio.source],
                autoplay: false,
                loop: audio.loop,
                onload: () => {
                    audio.state = Audio.STATE.LOADED;
                    this._logger.debug("audio loaded", audio.source);
                },
                onplay: () => {
                    audio.state = Audio.STATE.RUNNING;
                },
                onstop: () => {
                    audio.state = Audio.STATE.LOADED;
                },
                onend: () => {
                    audio.state = Audio.STATE.LOADED;
                }
            });
        }
    }

}