<< 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 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:
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 begins in Listing 6. A complete listing of the class is provided in Listing 20 near the end of thelesson.
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();
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with actionscript' conversation and receive update notifications?