logo

Custom Event in actionscript 3

logo

Adding custom event in as3 can make life easy. Sometime it needs to set root variable from different class or need to call root function for a specific application. Its better to use custom event than using "root" in class. Its easy to trigger and also can be listen from anywhere. Its make a class independent. Creating custom event handlers in ActionScript 3 is pretty much simple. Here i’m showing a simple myCustomEvent class which extends the flash Event class.

   1: //Declare a class for myCustomEvent
   2: package wneeds.events{
   3:     
   4:     import flash.events.Event;
   5:  
   6:     public class myCustomEvent extends Event {
   7:         
   8:         public var myMessage:String;
   9:         
  10:         public function myCustomEvent(msg) {
  11:             
  12:             super("myCustomEvent");
  13:             myMessage = msg;
  14:         }
  15:     }
  16: }

In the above class i also declare a variable named "myMessage" to show how to pass variable in a custom event class. For triggering the custom event, it just need to include the class and use the dispatchEvent method as like below…

   1: //How to asign a event
   2: import wneeds.events.myCustomEvent;
   3:  
   4: dispatchEvent(new myCustomEvent("Hello ..."));

Now time to add Listener to listen the event from anywhere….

   1: //How to add the listener for the myCustomEvent..
   2:  
   3: this.addEventListener("myCustomEvent", showMessage);
   4:  
   5: function showMessage(e:myCustomEvent):void {
   6:     trace(e.myMessage);
   7: }

In various purpose its better to pass object. Because in object its easy to pass multiple properties and easy to write in json format.

   1: dispatchEvent(new myCustomEvent({name:'tma',height: 100, msg : 'Hello...'}));

Then it can be easily possible to get all the properties from the listener…. :)

logo
Powered by Wordpress | Designed by Elegant Themes
5 visitors online now
5 guests, 0 members
Max visitors today: 5 at 04:41 am GMT+8
This month: 9 at 03-11-2010 05:20 pm GMT+8
This year: 46 at 01-15-2010 12:41 am GMT+8
All time: 51 at 10-22-2009 08:26 am GMT+8