Last active
November 11, 2016 16:34
-
-
Save cbaconnier/9a0eb2aa149da2a4340ef1d5bcdbc5c8 to your computer and use it in GitHub Desktop.
Revisions
-
cbaconnier revised this gist
Nov 11, 2016 . 1 changed file with 5 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,3 +1,8 @@ /* * Will not work as expected * Please refer to this: https://github.com/sharbelfs/pixi-game-template/issues/1 */ import { utils, loader } from 'pixi.js' import { Howler, Howl } from 'howler' // import * as ResourceLoader from 'resource-loader' -
cbaconnier created this gist
Nov 9, 2016 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,118 @@ import { utils, loader } from 'pixi.js' import { Howler, Howl } from 'howler' // import * as ResourceLoader from 'resource-loader' class SoundManager extends utils.EventEmitter { constructor(){ super() this._audios = new Map() this.audioUse = ['webm', 'mp3', 'wav', 'ogg'] // const Resource = ResourceLoader.Resource // Resource.setExtensionLoadType( "wav", Resource.LOAD_TYPE.AUDIO ) // Resource.setExtensionLoadType( "mp3", Resource.LOAD_TYPE.AUDIO ) // Resource.setExtensionLoadType( "ogg", Resource.LOAD_TYPE.AUDIO ) // Resource.setExtensionLoadType( "webm", Resource.LOAD_TYPE.AUDIO ) loader.use( this.middleware() ) } volume(level){ Holwer.volume(level) } set mute(value){ this._mute = value Howler.mute(this._mute) } get mute(){ return this._mute } muteAudio(sound, value = null){ if(value === null){ return this.audio(sound)._muted } this.audio(sound).mute(value) } audio(value){ return this._audios.get(value) } middleware(){ const self = this return function(res, next){ if(res){ let i, ext = self.getFileExt(res.url) let urlWithoutExt = res.url.slice(0, ext.index) for (i = 0; i < self.audioUse.length; i++) { if (ext[0].indexOf(self.audioUse[i]) >= 0) { res.url = self.splitExts(ext[0]) // Has a list of extensions if (Array.isArray(res.url)) { for (i = 0; i < res.url.length; i++) { res.url[i] = `${urlWithoutExt}${res.url[i]}` } } else { // Has a single extension res.url = [`${urlWithoutExt}${res.url}`] } res.data = new Howl({ src: res.url, preload: true, //sprite: spritename }) self._audios.set(res.name, res.data) res.data.once('load', next) } } } next() } } getFileExt(path) { return (/[.]/.exec(path)) ? /[^.]+$/.exec(path) : undefined } splitExts(ext) { return (/[|]/.exec(ext)) ? ext.split('|') : ext } /* setupAudioSprite(spritemap){ let HowlerSprite = {} for(let key of Object.keys(spritemap)){ console.log(key) HowlerSprite[key] = this.audioSpriteToHowler(spritemap[key]) } return HowlerSprite } audioSpriteToHowler(data){ return [ data.start * 1000, (data.end - data.start) * 1000, data.loop ] } */ } export default new SoundManager()