package { import mx.controls.Button; import flash.events.Event; // Define the custom event [Event(name="labelChanged", type="flash.events.Event")] [Effect(name="labelChangedEffect", event="labelChanged")] public class professional_flex_code_14_ButtonLabel extends Button { // property to hold label value private var _myLabel:String; // public setter method public function set myLabel(s:String):void { _myLabel = s; this.label = s; // Create and dispatch custom event var eventObj:Event = new Event("labelChanged"); dispatchEvent(eventObj); } } }