<< Chapter < Page Chapter >> Page >
Listing

Source code for the class named customeffect.

package CustomClasses{ import mx.effects.Effect;import mx.effects.IEffectInstance; import mx.events.EffectEvent;public class CustomEffect extends Effect{//Would prefer to make these private and use implicit// setter methods, but I decided to leave them public // to simplify the code.public var theDuration:Number = 2000;//default value public var rotateAngleFrom:Number = 0;//default valuepublic var rotateAngleTo:Number = 360;//default value public var wipeShowTarget:Boolean = true;//defaultpublic var glowColor:uint = 0xFF0000;//default value public var glowInner:Boolean = true;//default valuepublic var glowStrength:Number = 255;//default valuepublic function CustomEffect(target:Object=null){ super(target);instanceClass = CustomEffectInstance; } //end constructoroverride protected function initInstance(instance:IEffectInstance):void{ super.initInstance(instance);CustomEffectInstance(instance).theDuration = this.theDuration;CustomEffectInstance(instance).rotateAngleFrom = this.rotateAngleFrom;CustomEffectInstance(instance).rotateAngleTo = this.rotateAngleTo;CustomEffectInstance(instance).wipeShowTarget = this.wipeShowTarget;CustomEffectInstance(instance).glowColor = this.glowColor;CustomEffectInstance(instance).glowInner = this.glowInner;CustomEffectInstance(instance).glowStrength = this.glowStrength;} //end initInstance //--------------------------------------------------//override public function getAffectedProperties():Array{return ["rotation","rotationX","rotationY","x","y"];} //end getAffectedProperties //--------------------------------------------------//} //end class } //end package Listing

Source code for the class named customeffectinstance.

package CustomClasses{ import mx.effects.EffectInstance;import mx.effects.Glow; import mx.effects.Parallel;import mx.effects.Rotate; import mx.effects.WipeRight;import mx.events.FlexEvent;public class CustomEffectInstance extends EffectInstance{//Instantiate the individual effects that will be // combined in parallel to produce the custom effect.private var wipeEffect:WipeRight = new WipeRight(); private var rotateEffect:Rotate = new Rotate();private var glowEffect:Glow = new Glow();//Variables for the storage of effect properties. public var theDuration:Number;public var rotateAngleFrom:Number; public var rotateAngleTo:Number;public var wipeShowTarget:Boolean; public var glowColor:uint;public var glowInner:Boolean; public var glowStrength:Number;public function CustomEffectInstance(theTarget:Object){ super(theTarget);//Set the target for all three individual effects. rotateEffect.target = theTarget;wipeEffect.target = theTarget; glowEffect.target = theTarget;} //end constructoroverride public function play():void{ super.play();//Note: The following values cannot be set in the// constructor because the variables aren't stable // at that point in time.//Configure the rotate effectrotateEffect.angleFrom = rotateAngleFrom; rotateEffect.angleTo = rotateAngleTo;rotateEffect.duration = theDuration;//Configure the wipe effect. wipeEffect.showTarget = wipeShowTarget;wipeEffect.duration = theDuration;//Configure the glow effect. glowEffect.color = glowColor;glowEffect.duration = theDuration; glowEffect.inner = glowInner;glowEffect.strength = glowStrength;//Play all three effects in parallel. var parallel:Parallel = new Parallel();parallel.addChild(rotateEffect); parallel.addChild(glowEffect);parallel.addChild(wipeEffect); parallel.play();} //end play //--------------------------------------------------//} //end class } //end package

Driver class for the program named customeffect02.

/*CustomEffect02 11/26/09 *********************************************************/package CustomClasses{ import mx.containers.VBox;import mx.controls.Button; import mx.controls.Label;import mx.controls.Spacer; import flash.events.MouseEvent;public class Driver extends VBox{ //Instantiate and save references to all of the// objects needed by the program. private var title:Label = new Label();private var btnA:Button = new Button(); private var btnB:Button = new Button();private var spacer:Spacer = new Spacer(); private var theEffect:CustomEffect =new CustomEffect(); //--------------------------------------------------//public function Driver(){//constructor//Make some space at the top of the display. spacer.height = 40;addChild(spacer);//Set title properties and add to the VBox. title.setStyle("color","0xFFFF00");title.setStyle("fontSize",14); title.text = "Demo custom effect";addChild(title); //Instantiate two buttons and add them to the VBox.// Register the same event listener on both of // them.btnA.label = "Click me and watch the effect."; btnA.addEventListener(MouseEvent.CLICK,handler);addChild(btnA);btnB.label = "Or click me instead."; btnB.addEventListener(MouseEvent.CLICK,handler);addChild(btnB); //Specify both buttons to be the target for the// same effect. theEffect.targets = [btnA,btnB];//Set various properties needed by the effect. theEffect.theDuration = 4000;theEffect.rotateAngleFrom = 0; theEffect.rotateAngleTo = 720;theEffect.wipeShowTarget = true; theEffect.glowColor = 0xFF0000;theEffect.glowInner = true; theEffect.glowStrength = 255;} //end constructor //--------------------------------------------------//public function handler(event:MouseEvent):void{theEffect.play(); }//end handler} //end class } //end package

Driver class for the program named customeffect03.

/*CustomEffect03 11/27/09 *********************************************************/package CustomClasses{ import mx.containers.VBox;import mx.controls.Button; import mx.controls.Label;import mx.controls.Spacer; public class Driver extends VBox{//Instantiate and save references to all of the // objects needed by the program.private var title:Label = new Label(); private var btnA:Button = new Button();private var btnB:Button = new Button(); private var spacer:Spacer = new Spacer();private var theEffect:CustomEffect = new CustomEffect();//--------------------------------------------------//public function Driver(){//constructor //Make some space at the top of the display.spacer.height = 40; addChild(spacer);//Set title properties and add to the VBox.title.setStyle("color","0xFFFF00"); title.setStyle("fontSize",14);title.text = "Demo custom effect"; addChild(title);//Instantiate two buttons and add them to the VBox. // Register the same event listener on both of// them. btnA.label = "Click me and watch the effect.";addChild(btnA);btnB.label = "Or click me instead."; addChild(btnB);//Set various properties needed by the effect.theEffect.theDuration = 4000; theEffect.rotateAngleFrom = 0;theEffect.rotateAngleTo = 720; theEffect.wipeShowTarget = true;theEffect.glowColor = 0xFF0000; theEffect.glowInner = true;theEffect.glowStrength = 255;//Apply the effect to the two buttons individually. btnA.setStyle("mouseUpEffect",theEffect);btnB.setStyle("mouseUpEffect",theEffect); } //end constructor//--------------------------------------------------// } //end class} //end package

Miscellaneous

This section contains a variety of miscellaneous materials.

Housekeeping material
  • Module name: Creating Custom Effects
  • Files:
    • ActionScript0118\ActionScript0118.htm
    • ActionScript0118\Connexions\ActionScriptXhtml0118.htm
PDF disclaimer: Although the Connexions site makes it possible for you to download a PDF file for thismodule at no charge, and also makes it possible for you to purchase a pre-printed version of the PDF file, you should beaware that some of the HTML elements in this module may not translate well into PDF.

-end-

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Object-oriented programming (oop) with actionscript. OpenStax CNX. Jun 04, 2010 Download for free at http://cnx.org/content/col11202/1.19
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Object-oriented programming (oop) with actionscript' conversation and receive update notifications?

Ask