Actionscript 3: Override a default public setter of an object.
This one can be pretty nifty. In my certain case I had a bunch of on screen items that I continually updating their alpha property but when there was a mouse over I didn’t want to update that property anymore and peg it right at 1 so it stood out. In this case it was a text field so here is a class with the not important parts taken out.
View CodeACTIONSCRIPT | |
package{ import flash.text.TextField; import flash.events.MouseEvent; public class Tag extends TextField{ private var alpha_locked:Boolean; public function Tag():void{ this.alpha_locked = false; this.addEventListener(MouseEvent.MOUSE_OVER, mouse_over); this.addEventListener(MouseEvent.MOUSE_OUT, mouse_out); } private function mouse_over(e:MouseEvent):void{ this.alpha = 1; this.alpha_locked = true; } private function mouse_out(e:MouseEvent):void{ this.alpha_locked = false; } override public function set alpha(a:Number):void{ if(!alpha_locked) super.alpha = a; } } } | |
The magic happens with the super.alpha, super which refers to the parent class that Tag inherits from. It checks the alpha_locked variable and if things are ok it sets it, otherwise it’s ignored. Then the alpha locked variable is controlled by the MouseOver and MouseOut events.