docs: function (reelId, fromx, y, tox) {
  		var reel, i, tile, tileh, duration, pos;
  
  		//play a reel
  		//.animate('PlayerRunning', 15, -1) // start animation
  		if (arguments.length < 4 && typeof fromx === "number") {
  			duration = fromx;
  
  			//make sure not currently animating
  			this._currentReelId = reelId;
  
  			currentReel = this._reels[reelId];
  
  			this._frame = {
  				currentReel: currentReel,
  				numberOfFramesBetweenSlides: Math.ceil(duration / currentReel.length),
  				currentSlideNumber: 0,
  				frameNumberBetweenSlides: 0,
  				repeat: 0
  			};
  			if (arguments.length === 3 && typeof y === "number") {
  				//User provided repetition count
  				if (y === -1) this._frame.repeatInfinitly = true;
  				else this._frame.repeat = y;
  			}
  
  			pos = this._frame.currentReel[0];
  			this.__coord[0] = pos[0];
  			this.__coord[1] = pos[1];
  
  			this.bind("EnterFrame", this.updateSprite);
  			return this;
  		}
  		// .animate('PlayerRunning', 0, 0, 3) //setup animation
  		if (typeof fromx === "number") {
  			// Defind in Sprite component.
  			tile = this.__tile + parseInt(this.__padding[0] || 0, 10);
  			tileh = this.__tileh + parseInt(this.__padding[1] || 0, 10);
  
  			reel = [];
  			i = fromx;
  			if (tox > fromx) {
  				for (; i <= tox; i++) {
  					reel.push([i * tile, y * tileh]);
  				}
  			} else {
  				for (; i >= tox; i--) {
  					reel.push([i * tile, y * tileh]);
  				}
  			}
  
  			this._reels[reelId] = reel;
  		} else if (typeof fromx === "object") {
  			// @sign public this .animate(reelId, [[x1,y1],[x2,y2],...])
  			i = 0;
  			reel = [];
  			tox = fromx.length - 1;
  			tile = this.__tile + parseInt(this.__padding[0] || 0, 10);
  			tileh = this.__tileh + parseInt(this.__padding[1] || 0, 10);
  
  			for (; i <= tox; i++) {
  				pos = fromx[i];
  				reel.push([pos[0] * tile, pos[1] * tileh]);
  			}
  
  			this._reels[reelId] = reel;
  		}
  
  		return this;
  	}