<< Chapter < Page Chapter >> Page >

The initInstance method receives a reference to the instance object as the interface type IEffectInstance . The objective is to write values into the properties belonging to the instance object. However,the IEffectInstance interface doesn't know anything about properties having those names. Therefore, it is necessary to cast the instanceobject's reference to the type of the instance object before making each assignment. One such cast operation is shown by the statement that begins with CustomEffectInstance(instance) in Listing 4.

Call the initInstance method of the superclass

Also note that you must call the initInstance method of the superclass in your overridden method as shown in Listing 4.

This method provides the mechanism by which required property values make it all the way from the driver class to the instance class.

Override the getAffectedProperties method

According to About creating a custom effect , you must override the inherited method named getAffectedProperties in such a way as to return an array of strings. Each string is the name of a property of the target object that ischanged by the effect. If no properties are changed, you must return an empty array.

Listing 5 shows my overridden version of the getAffectedProperties method.

Override the getaffectedproperties method.

override public function getAffectedProperties():Array{return ["rotation","rotationX","rotationY","x","y"];} //end getAffectedProperties //--------------------------------------------------//} //end class } //end package

This is a little difficult

It is a little difficult to know exactly which properties belonging to the target component will be modified by the effect, particularly when the customeffect is a composite of existing effects. Also, I don't know whether a change must be permanent or whether a temporary change in the value of a propertyrequires that it be returned by the getAffectedProperties method. There are several target property values that are temporarily changed bythis custom effect.

In this program, the target component is a Button object but it could be any component. I went through the list of properties belonging to abutton and came up with the five shown in Listing 5 as those most likely to be modified.

The end of the CustomEffect class

Listing 5 also signals the end of the class named CustomEffect . In addition to the methods that were overridden above, the following two inherited methods may optionally be overridden as well:

  • effectStartHandler - called when the effect instance starts playing.
  • effectEndHandler - called when the effect instance finishes playing.

As the names and descriptions of these two methods suggest, they can be overridden to provide any special behavior that you need when the effect startsand finishes playing.

The class named CustomEffectInstance

The class named CustomEffectInstance begins in Listing 6. A complete listing of the class is provided in Listing 20 near the end of thelesson.

Beginning of the customeffectinstance class.

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();

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