/*! jquery.spriteAnimation - v0.2.3 - 2013-10-12 * https://github.com/gunderson/jquery.spriteAnimation * Copyright (c) 2013 Patrick Gunderson; Licensed MIT */ (function(e){e.spriteAnimation=function(n,t){var r=this;return r.$el=e(n),r.el=n,r.currentFrameIndex=0,r.running=!1,r.timeout=null,r.$el.data("spriteAnimation",r),r.init=function(){r.el=n,r.options=e.extend({},e.spriteAnimation.options,t),r.options.sequences={},r.$el=e(this.el),r.setFrameRate(r.options.frameRate)},r.generate=function(){r.$anim=e("
").addClass("spriteAnimation"),r.$anim.css({backgroundImage:"url("+r.options.src+")",backgroundPosition:r.options.currentSequence.firstFramePosition.x+"px "+r.options.currentSequence.firstFramePosition.y+"px",width:r.options.frameWidth,height:r.options.frameHeight,overflow:"hidden"}),r.$el.append(r.$anim)},r.setFrameRate=function(e){return r.frameRate=e,r.frameDelay=1e3/e,r},r.play=function(){return r.running=!0,r.options.currentSequence.reverse=!1,r.delayNextFrame(),r},r.rewind=function(){return r.running=!0,r.options.currentSequence.reverse=!0,r.delayPrevFrame(),r},r.stop=function(){return r.timeout&&clearTimeout(r.timeout),r.running=!1,r},r.reset=function(){return r.stop(),r.currentFrameIndex=0,r.gotoFrame(0),r},r.gotoFrame=function(e){var n=-r.options.currentSequence.firstFramePosition.x;"x"===r.options.orientation&&(n=-e*(r.options.frameWidth+r.options.frameSpacing)-r.options.currentSequence.firstFramePosition.x);var t=-r.options.currentSequence.firstFramePosition.y;return"y"===r.options.orientation&&(t=-e*(r.options.frameHeight+r.options.frameSpacing)-r.options.currentSequence.firstFramePosition.y),r.$anim.css({backgroundPosition:n+"px "+t+"px"}),r.options.currentSequence.reverse?r.delayPrevFrame():r.delayNextFrame(),r},r.nextFrame=function(){return++r.currentFrameIndex=0?r.gotoFrame(r.currentFrameIndex):r.options.currentSequence.loop?(r.currentFrameIndex=r.options.currentSequence.length,r.$el.trigger("spriteAnimation:loop"),r.$el.trigger("spriteAnimation:loop-to-end"),r.gotoFrame(r.currentFrameIndex)):(r.complete(),r.stop())},r.delayNextFrame=function(){r.running&&(r.timeout=setTimeout(function(){r.nextFrame()},r.frameDelay))},r.delayPrevFrame=function(){r.running&&(r.timeout=setTimeout(function(){r.prevFrame()},r.frameDelay))},r.addSequence=function(n){r.options.sequences[n.label]=e.extend({},r.options.defaultSequence,n)},r.complete=function(){"function"==typeof r.options.currentSequence.onComplete&&r.options.currentSequence.onComplete(),r.$el.trigger("spriteAnimation:complete"),r.$el.trigger("spriteAnimation:complete:"+r.options.currentSequence.label)},r.init(),r},e.spriteAnimation.options={src:"",sequences:{},defaultSequence:{label:"a",length:25,loop:!1,firstFramePosition:{x:0,y:0},reverse:!1,onComplete:null},orientation:"x",frameWidth:25,frameHeight:25,frameSpacing:0,frameRate:60,gotoAndPlay:"a"},e.fn.spriteAnimation=function(n){return this.each(function(){var t,r,o=e(this);if(n=n||{},!(r=this.spriteAnimation)){if(!n.src){if(!(n.src=o.css("backgroundImage"))&&!(n.src=o.attr("src")))return console?console.error("SpriteAnimation requires image src."):!1,this;o.css("backgroundImage","none"),o.attr("src",""),"url("===n.src.substr(0,4)&&(n.src=n.src.replace("url(","").replace(")",""))}n.frameWidth||(n.frameWidth=o.width()),n.frameHeight||(n.frameHeight=o.height()),this.spriteAnimation=r=new e.spriteAnimation(this,t),n.addSequences||n.addSequence?t=e.extend({},e.spriteAnimation.options,n):(t=e.extend({},e.spriteAnimation.options),n.label=n.label||"a",n.addSequence=e.extend({},n,{addSequence:null}),n.setSequence=n.label)}if(n&&"object"==typeof n){if(e.extend(r.options,n),n.addSequences){var i;e.each(n.addSequences,function(e){i||(i=e),this.label=e,r.addSequence(this)}),n.setSequence=i}n.addSequence&&(n.addSequence.label||(n.label="a"+r.sequences.length),r.addSequence(n.addSequence)),n.gotoAndPlay&&(n.setSequence=n.gotoAndPlay,r.options.sequences[n.setSequence].reverse===!0?(n.gotoFrame=r.options.sequences[n.setSequence].length-1,n.command="rewind"):n.command="play"),n.setSequence&&(r.options.currentSequence=r.options.sequences[n.setSequence],n.gotoFrame=n.gotoFrame||0),r.$anim||r.generate(),n.frameRate&&r.setFrameRate(n.frameRate),(n.gotoFrame>=0||n.gotoFrame)&&("end"===n.gotoFrame&&(n.gotoFrame=r.options.currentSequence.length-1),r.stop(),r.currentFrameIndex=n.gotoFrame,r.gotoFrame(n.gotoFrame)),n.gotoFrameRatio>=0&&(n.gotoFrameRatio=Math.max(Math.min(n.gotoFrameRatio,1),0),r.currentFrameIndex=n.gotoFrameRatio*r.options.currentSequence.length>>0,r.gotoFrame(r.currentFrameIndex)),n.command&&(n=n.command)}return n&&"string"==typeof n?(r.$anim||r.generate(),"play"===n&&r.play(),"rewind"===n&&r.rewind(),"stop"===n&&r.stop(),"reset"===n&&r.reset()):n&&!isNaN(parseInt(n,10))?r.gotoFrame(n):n||r.reset(),this})}})(jQuery);