/**
* @author Mat Groves http://matgroves.com/
*/
var PIXI = PIXI || {};
/**
* @class A MovieClip is a simple way to display an animation depicted by a list of textures.
* @augments PIXI.Sprite
* @param an array of textures that make up the animation
* @return {PIXI.MovieClip} texture {@link PIXI.MovieClip}
*/
PIXI.MovieClip = function(textures)
{
PIXI.Sprite.call( this, textures[0]);
/**
* The array of textures that make up the animation
* @type Array
*/
this.textures = textures;
/**
* [read only] The index MovieClips current frame (this may not have to be a whole number)
* @type Number
*/
this.currentFrame = 0;
/**
* The speed that the MovieClip will play at. Higher is faster, lower is slower
* @type Number
*/
this.animationSpeed = 1;
/**
* [read only] indicates if the MovieClip is currently playing
* @type Boolean
*/
this.playing;
}
// constructor
PIXI.MovieClip.constructor = PIXI.MovieClip;
PIXI.MovieClip.prototype = Object.create( PIXI.Sprite.prototype );
/**
* Stops the MovieClip
*/
PIXI.MovieClip.prototype.stop = function()
{
this.playing = false;
}
/**
* Plays the MovieClip
*/
PIXI.MovieClip.prototype.play = function()
{
this.playing = true;
}
/**
* Stops the MovieClip and goes to a specific frame
* @param frame index to stop at
*/
PIXI.MovieClip.prototype.gotoAndStop = function(frameNumber)
{
this.playing = false;
this.currentFrame = frameNumber;
var round = (this.currentFrame + 0.5) | 0;
this.setTexture(this.textures[round % this.textures.length]);
}
/**
* Goes to a specific frame and begins playing the MovieClip
* @param frame index to start at
*/
PIXI.MovieClip.prototype.gotoAndPlay = function(frameNumber)
{
this.currentFrame = frameNumber;
this.playing = true;
}
PIXI.MovieClip.prototype.updateTransform = function()
{
PIXI.Sprite.prototype.updateTransform.call(this);
if(!this.playing)return;
this.currentFrame += this.animationSpeed;
var round = (this.currentFrame + 0.5) | 0;
this.setTexture(this.textures[round % this.textures.length]);
}