package starling.display {
import starling.textures.Texture;
import starling.animation.IAnimatable;
import openfl.media.SoundTransform;
import openfl.media.Sound;
import openfl.Vector;
/**
 *  Dispatched whenever the movie has displayed its last frame. 
 * @externs
 */
public class MovieClip extends starling.display.Image implements starling.animation.IAnimatable {
	/**
	 *  Creates a movie clip from the provided textures and with the specified default framerate.
	 *      * The movie will have the size of the first frame. 
	 */
	public function MovieClip(textures:openfl.Vector, fps:Number = undefined) {
		super(undefined);
	}
	/**
	 *  Adds an additional frame, optionally with a sound and a custom duration. If the 
	 *      * duration is omitted, the default framerate is used (as specified in the constructor). 
	 */
	public function addFrame(texture:starling.textures.Texture, sound:openfl.media.Sound = undefined, duration:Number = undefined):void {}
	/**
	 *  Adds a frame at a certain index, optionally with a sound and a custom duration. 
	 */
	public function addFrameAt(frameID:int, texture:starling.textures.Texture, sound:openfl.media.Sound = undefined, duration:Number = undefined):void {}
	/**
	 *  Removes the frame at a certain ID. The successors will move down. 
	 */
	public function removeFrameAt(frameID:int):void {}
	/**
	 *  Returns the texture of a certain frame. 
	 */
	public function getFrameTexture(frameID:int):starling.textures.Texture { return null; }
	/**
	 *  Sets the texture of a certain frame. 
	 */
	public function setFrameTexture(frameID:int, texture:starling.textures.Texture):void {}
	/**
	 *  Returns the sound of a certain frame. 
	 */
	public function getFrameSound(frameID:int):openfl.media.Sound { return null; }
	/**
	 *  Sets the sound of a certain frame. The sound will be played whenever the frame 
	 *      * is displayed. 
	 */
	public function setFrameSound(frameID:int, sound:openfl.media.Sound):void {}
	/**
	 *  Returns the method that is executed at a certain frame. 
	 */
	public function getFrameAction(frameID:int):Function { return null; }
	/**
	 *  Sets an action that will be executed whenever a certain frame is reached.
	 *      *
	 *      * @param frameID   The frame at which the action will be executed.
	 *      * @param action    A callback with two optional parameters:
	 *      *                  <code>function(movie:MovieClip, frameID:int):void;</code>
	 *      
	 */
	public function setFrameAction(frameID:int, action:Function):void {}
	/**
	 *  Returns the duration of a certain frame (in seconds). 
	 */
	public function getFrameDuration(frameID:int):Number { return 0; }
	/**
	 *  Sets the duration of a certain frame (in seconds). 
	 */
	public function setFrameDuration(frameID:int, duration:Number):void {}
	/**
	 *  Reverses the order of all frames, making the clip run from end to start.
	 *      * Makes sure that the currently visible frame stays the same. 
	 */
	public function reverseFrames():void {}
	/**
	 *  Starts playback. Beware that the clip has to be added to a juggler, too! 
	 */
	public function play():void {}
	/**
	 *  Pauses playback. 
	 */
	public function pause():void {}
	/**
	 *  Stops playback, resetting "currentFrame" to zero. 
	 */
	public function stop():void {}
	/**
	 *  @inheritDoc 
	 */
	public function advanceTime(time:Number):void {}
	/**
	 *  The total number of frames. 
	 */
	public function get numFrames():int { return 0; }
	/**
	 *  The total duration of the clip in seconds. 
	 */
	public function get totalTime():Number { return 0; }
	/**
	 *  The time that has passed since the clip was started (each loop starts at zero). 
	 */
	public function get currentTime():Number { return 0; }
	public function set currentTime(value:Number):void {}
	/**
	 *  Indicates if the clip should loop. @default true 
	 */
	public function get loop():Boolean { return false; }
	public function set loop(value:Boolean):void {}
	/**
	 *  If enabled, no new sounds will be started during playback. Sounds that are already
	 *      * playing are not affected. 
	 */
	public function get muted():Boolean { return false; }
	public function set muted(value:Boolean):void {}
	/**
	 *  The SoundTransform object used for playback of all frame sounds. @default null 
	 */
	public function get soundTransform():openfl.media.SoundTransform { return null; }
	public function set soundTransform(value:openfl.media.SoundTransform):void {}
	/**
	 *  The index of the frame that is currently displayed. 
	 */
	public function get currentFrame():int { return 0; }
	public function set currentFrame(value:int):void {}
	/**
	 *  The default number of frames per second. Individual frames can have different 
	 *      * durations. If you change the fps, the durations of all frames will be scaled 
	 *      * relatively to the previous value. 
	 */
	public function get fps():Number { return 0; }
	public function set fps(value:Number):void {}
	/**
	 *  Indicates if the clip is still playing. Returns <code>false</code> when the end 
	 *      * is reached. 
	 */
	public function get isPlaying():Boolean { return false; }
	/**
	 *  Indicates if a (non-looping) movie has come to its end. 
	 */
	public function get isComplete():Boolean { return false; }
}
}
