12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // import Howl from '../../3rd_party/howler';
- const audioControllerFactory = (function () {
- function AudioController(audioFactory) {
- this.audios = [];
- this.audioFactory = audioFactory;
- this._volume = 1;
- this._isMuted = false;
- }
- AudioController.prototype = {
- addAudio: function (audio) {
- this.audios.push(audio);
- },
- pause: function () {
- var i;
- var len = this.audios.length;
- for (i = 0; i < len; i += 1) {
- this.audios[i].pause();
- }
- },
- resume: function () {
- var i;
- var len = this.audios.length;
- for (i = 0; i < len; i += 1) {
- this.audios[i].resume();
- }
- },
- setRate: function (rateValue) {
- var i;
- var len = this.audios.length;
- for (i = 0; i < len; i += 1) {
- this.audios[i].setRate(rateValue);
- }
- },
- createAudio: function (assetPath) {
- if (this.audioFactory) {
- return this.audioFactory(assetPath);
- } if (window.Howl) {
- return new window.Howl({
- src: [assetPath],
- });
- }
- return {
- isPlaying: false,
- play: function () { this.isPlaying = true; },
- seek: function () { this.isPlaying = false; },
- playing: function () {},
- rate: function () {},
- setVolume: function () {},
- };
- },
- setAudioFactory: function (audioFactory) {
- this.audioFactory = audioFactory;
- },
- setVolume: function (value) {
- this._volume = value;
- this._updateVolume();
- },
- mute: function () {
- this._isMuted = true;
- this._updateVolume();
- },
- unmute: function () {
- this._isMuted = false;
- this._updateVolume();
- },
- getVolume: function () {
- return this._volume;
- },
- _updateVolume: function () {
- var i;
- var len = this.audios.length;
- for (i = 0; i < len; i += 1) {
- this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));
- }
- },
- };
- return function () {
- return new AudioController();
- };
- }());
- export default audioControllerFactory;
|