/ Published in: ActionScript 3
Class version of TimelineManipulation.
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
/** * VERSION: Early * DATE: 2011-11-15 * AS3 * TimelineTween, a class to simplify rollOver and rollOut event of a MovieClip based button. **/ package com.tl { import flash.events.MouseEvent; import flash.display.MovieClip; import flash.events.Event; public class TimelineTween extends MovieClip{ public function TimelineTween(object:MovieClip) { object.addEventListener(MouseEvent.ROLL_OVER, onRollover); object.addEventListener(MouseEvent.ROLL_OUT, onRollout); } /* Events */ private function onRollover(me:MouseEvent):void{ playTo(me.currentTarget, me.currentTarget.totalFrames); } private function onRollout(me:MouseEvent):void{ rewindTo(me.currentTarget, 1); } /* Public functions */ public static function onRollAndOut(object:MovieClip):TimelineTween{ return new TimelineTween(object); } public static function playTo(object:MovieClip, frameNum:Number){ object.types = "number"; object.frameNum = frameNum; object.addEventListener(Event.ENTER_FRAME, playLoop); } public static function rewindTo(object:MovieClip, frameNum:Number){ object.types = "number"; object.frameNum = frameNum; object.addEventListener(Event.ENTER_FRAME, rewindLoop); } public static function rollToLabel(object:MovieClip, label:String):void{ object.types = "label"; object.frameLabel = label; object.addEventListener(Event.ENTER_FRAME, playLoop); } public static function rewindToLabel(object:MovieClip, label:String):void{ object.types = "label"; object.frameLabel = label; object.addEventListener(Event.ENTER_FRAME, rewindLoop); } /* Enterframe for mouse roll over event - start */ private function playLoop(e:Event):void{ if(e.currentTarget.types == "number"){ if(e.currentTarget.currentFrame < e.currentTarget.frameNum){ e.currentTarget.nextFrame(); }else if(e.currentTarget.currentFrame == e.currentTarget.frameNum){ e.currentTarget.removeEventListener(Event.ENTER_FRAME, playLoop); e.currentTarget.stop(); } }else if(e.currentTarget.types == "label"){ if(e.currentTarget.currentFrameLabel == e.currentTarget.frameLabel){ e.currentTarget.removeEventListener(Event.ENTER_FRAME, playLoop); e.currentTarget.stop(); }else{ e.currentTarget.nextFrame(); } } } /* Enterframe for mouse roll over event - end */ /* Enterframe for mouse roll out event - start */ private function rewindLoop(e:Event):void{ if(e.currentTarget.types == "number"){ if(e.currentTarget.currentFrame > e.currentTarget.frameNum){ e.currentTarget.prevFrame(); }else if(e.currentTarget.currentFrame == e.currentTarget.frameNum){ e.currentTarget.removeEventListener(Event.ENTER_FRAME, rewindLoop); e.currentTarget.stop(); } }else if(e.currentTarget.types == "label"){ if(e.currentTarget.currentFrameLabel == e.currentTarget.frameLabel){ e.currentTarget.removeEventListener(Event.ENTER_FRAME, rewindLoop); e.currentTarget.stop(); }else{ e.currentTarget.prevFrame(); } } } /* Enterframe for mouse roll out event - end */ } } /* How To use it. Create one way classic tween animation and put stop(); in the first frame. Then, put this script outside your movie clip // Standard use import com.tl.TimelineTween; var movieClipButton:MovieClip = new MovieClip(); TimelineTween.onRollAndOut(movieClipButton); // Custom use import com.tl.TimelineTween; var movieClipButton:MovieClip = new MovieClip(); // Forward use TimelineTween.playTo(movieClipButton, 24); // playTo(object:MovieClip, frameNumber:Number); // Backward use TimelineTween.rewindTo(movieClipButton, 1); // rewindTo(object:MovieClip, frameNumber:Number); // Forward use with label TimelineTween.playTo(movieClipButton, "end_of_mc"); // playTo(object:MovieClip, label:String); // Backward use with label TimelineTween.rewindTo(movieClipButton, "beginning_of_mc"); // rewindTo(object:MovieClip, label:String); */