| var 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, len = this.audios.length; |
| for (i = 0; i < len; i += 1) { |
| this.audios[i].pause(); |
| } |
| }, |
| resume: function () { |
| var i, len = this.audios.length; |
| for (i = 0; i < len; i += 1) { |
| this.audios[i].resume(); |
| } |
| }, |
| setRate: function (rateValue) { |
| var i, 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); |
| } else if (Howl) { |
| return new Howl({ |
| src: [assetPath], |
| }); |
| } else { |
| 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 (value) { |
| return this._volume; |
| }, |
| _updateVolume: function () { |
| var i, 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(); |
| }; |
| }()); |