Revision: 53386
Updated Code
at November 21, 2011 15:31 by okhy
Updated Code
/**
* 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);
*/
Revision: 53385
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at November 21, 2011 15:28 by okhy
Initial Code
/**
* 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);
}
private function playTo(object:MovieClip, frameNum:Number){
object.types = "number";
object.frameNum = frameNum;
object.addEventListener(Event.ENTER_FRAME, playLoop);
}
public 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);
*/
Initial URL
Initial Description
Class version of TimelineManipulation.
Initial Title
Timeline Manipulation
Initial Tags
line
Initial Language
ActionScript 3