Packagenet.guttershark.managers
Classpublic final class EventManager

The EventManager class simplifies events and provides shortcuts for event listeners for AS3 top level classes, guttershark classes, and component events on an opt-in basis. Depending on the callbacks you have defined in your callback delegate, event listeners will be added to the object. So this means that not all events will be listened for, only ones with callback functions defined.

Events can also be cycled through the javascript tracking framework. You can send all events that exist for an object through the tracking framework, or - (by default), only send the events through tracking that you have callbacks defined for.


Example
Using EventManager with a MovieClip.
 
  import net.guttershark.managers.EventManager;
  
  public class Main extends Sprite
  {
  
     private var em:EventManager;
     private var mc:MovieClip;
     
     public function Main()
     {
        super();
        em = EventManager.gi();
        mc = new MovieClip();
        mc.graphics.beginFill(0xFF0066);
        mc.graphics.drawCircle(200, 200, 100);
        mc.graphics.endFill();
        em.handleEvents(mc,this,"onCircle");
        addChild(mc);
     }
     
     public function onCircleClick():void
     {
        trace("circle click");
     }
     
     public function onCircleAddedToStage():void
     {
         trace("my circle was added to stage");
     }
  }
  

Callback methods are defined by the prefix you give to the handleEvents method, plus the event name.

How callbacks must be defined:
 
  import net.guttershark.managers.EventManager;
  
  var em:EventManager = EventManager.gi();
  var mc:MovieClip = new MovieClip();
  
  em.handleEvents(mc,this,"onMyMC",false,true); //onMyMC is the "prefix"
  
  function onMyMCClick():void{} //Click is the Event -> so the callback must be defined like prefix+event -> onMyMCClick
  
  //to define a handler for MouseMove, the prefix is "onMyMC" the event is "MouseMove".
  function onMyMCMouseMove():void{}
  

Passing the originating event object back to your callback is optional, but there are a few events that are not optional, because they contain information you probably need. The non-negotiable events are listed below.

EventManager also supports adding your own EventListenerDelegate, this is how component support is available. There are custom EventListenerDelegates for components so you don't have to compile every one into your swf. This also allows you to extend the EventManager to support your own classes that dispatch events.

Adding support for event handler delegate of an FLVPlayback component:
 
  import net.guttershark.managers.EventManager;
  import net.guttershark.support.eventmanager.FLVPlaybackEventListenerDelegate;
  var em:EventManager = EventManager.gi();
  em.addEventListenerDelegate(FLVPlayback,FLVPlaybackEventListenerDelegate);
  em.handleEvents(myFLVPlayback,this,"onMyFLVPlayback");
  

Adding support for tracking (only the click event will go through tracking):
 
  import net.guttershark.managers.EventManager;
  var em:EventManager = EventManager.gi();
  var mc:MovieClip = new MovieClip();
  em.handleEvents(mc,this,"onMyMC",false,true);
  function onMyMCClick(){}
  

Adding support for tracking (all events cycle through tracking):
 
  import net.guttershark.managers.EventManager;
  var em:EventManager = EventManager.gi();
  var mc:MovieClip = new MovieClip();
  em.handleEvents(mc,this,"onMyMC",false,false,true);
  function onMyMCClick(){}
  

In the above example, even though a callback is only defined for the click event, all events from the object will be fire through tracking - with the usual prefix+eventName as the id for the tracking call.

Using the EventManager in a loop situation for unique tracking:
 
  import net.guttershark.managers.EventManager;
  var em:EventManager = EventManager.gi();
  for(var i:int = 0; i < myClips.length; i++)
  {
      em.handleEvents(myClips[i],this,"onClip",false,true,false,"onClip"+i.toString());
  }
  function onClipClick()
  {
  }
  

Tracking xml file example for the above example.
 
  <tracking>
      <track id="onClipClick0">
          <atlas>...</atlas>
          <webtrends>...</webtrends>
      </track>
      <track id="onClipClick1">
          <atlas>...</atlas>
          <webtrends>...</webtrends>
      </track>
  </tracking>
  

Supported TopLevel Flashplayer Objects and Events:

ObjectEvents
DisplayObjectAdded,AddedToStage,Activate,Deactivate,Removed,RemovedFromStage
InteractiveObjectClick,DoubleClick,MouseUp,MouseDown,MouseMove,MouseOver,MouseWheel,MouseOut,FocusIn,
FocusOut,KeyFocusChange,MouseFocusChange,TabChildrenChange,TabIndexChange,TabEnabledChange
StageResize,Fullscreen,MouseLeave
TextFieldChange,Link
TimerTimer,TimerComplete
SocketConnect,Close,SocketData
LoaderInfoComplete,Unload,Init,Open,Progress
CameraActivity,Status
MicrophoneActivity,Status
NetConnectionStatus
NetStreamStatus
FileReferenceCancel,Complete,Open,Select,UploadCompleteData
SoundProgress,Complete,ID3,Open

Supported Guttershark Classes:

ObjectEventListenerDelegateEvents
PreloadControllerNAComplete,Progress,AssetComplete,AssetError
XMLLoaderNAComplete
SoundManagerNAChange
FLVNAStart,Stop,BufferFull,BufferEmpty,BufferFlush,SeekNotify,SeekInvalidTime, Meta,CuePoint,Progress,StreamNotFound

Supported Components:

ComponentEventHandlerDelegateEvents
FLVPlaybackFLVPlaybackEventDelegatePlay,Pause,Stopped,PlayheadUpdate,StateChange,AutoRewound,Close,Complete,FastForward,Rewind,
SkinLoaded,Seeked,ScrubStart,ScrubFinish,Ready,BufferState
Button (Inherits Events)Change,LabelChange,ButtonDown

To support any of those components, you need to add the EventListenerDelegate for the target component to the event manager. See the example above for using the FLVPlaybackEventDelegate

Non-negotiable event types that always pass event objects to your callbacks:



Public Methods
 MethodDefined by
  
addEventListenerDelegate(klassOfObject:Class, klassHandler:Class):void
Add a custom EventListenerDelegate - the class must be an implementation of EventListenerDelegate.
EventManager
  
disposeEvents(obj:IEventDispatcher):void
A shorcut for the disposeEventsForObject method, this will used in favor of the latter in 1.0.
EventManager
  
disposeEventsForObject(obj:IEventDispatcher):void
Dispose of events for an object that was being managed by this event manager.
EventManager
  
disposeEventsForObjects(... objects):void
Dispose of events for multiple objects.
EventManager
  
[static] Singleton access.
EventManager
  
handleEvents(obj:IEventDispatcher, callbackDelegate:String, callbackPrefix:Boolean, returnEventObjects:Boolean = false, cycleThroughTracking:Boolean = false, cycleAllThroughTracking:String = "false", trackingID:* = null):void
Add auto event handling for the target object.
EventManager
  
handleEventsForObjects(callbackDelegate:*, objects:Array, prefixes:Array, returnEventObjects:Boolean = false, cycleThroughTracking:Boolean = false):void
EventManager
  
he(obj:IEventDispatcher, callbackDelegate:String, callbackPrefix:Boolean, returnEventObjects:Boolean = false, cycleThroughTracking:Boolean = false, cycleAllThroughTracking:String = "false", trackingID:* = null):void
A shortcut for the handleEvents method.
EventManager
Method detail
addEventListenerDelegate()method
public function addEventListenerDelegate(klassOfObject:Class, klassHandler:Class):void

Add a custom EventListenerDelegate - the class must be an implementation of EventListenerDelegate.

Parameters
klassOfObject:Class
 
klassHandler:Class
disposeEvents()method 
public function disposeEvents(obj:IEventDispatcher):void

A shorcut for the disposeEventsForObject method, this will used in favor of the latter in 1.0.

Parameters
obj:IEventDispatcher — The object in which events are being managed.
disposeEventsForObject()method 
public function disposeEventsForObject(obj:IEventDispatcher):void

Dispose of events for an object that was being managed by this event manager.

Parameters
obj:IEventDispatcher — The object in which events are being managed.
disposeEventsForObjects()method 
public function disposeEventsForObjects(... objects):void

Dispose of events for multiple objects.

Parameters
... objects — An array of objects whose events should be disposed of.
gi()method 
public static function gi():EventManager

Singleton access.

Returns
EventManager
handleEvents()method 
public function handleEvents(obj:IEventDispatcher, callbackDelegate:String, callbackPrefix:Boolean, returnEventObjects:Boolean = false, cycleThroughTracking:Boolean = false, cycleAllThroughTracking:String = "false", trackingID:* = null):void

Add auto event handling for the target object.

Parameters
obj:IEventDispatcher — The object to add event listeners to.
 
callbackDelegate:String — The object in which your callback methods are defined.
 
callbackPrefix:Boolean — A prefix for all callback function definitions.
 
returnEventObjects:Boolean (default = false) — Whether or not to pass the origin event objects back to your callbacks (with exception of non-negotiable event types).
 
cycleThroughTracking:Boolean (default = false) — For every event that is handled, pass the same event through the tracking framework. Only events that have callbacks will be passed through tracking.
 
cycleAllThroughTracking:String (default = "false") — Automatically adds listeners for every event that the target object dispatches, in order to grab every event and pass to tracking, without requiring you to have a callback method defined on your callbackDelegate.
 
trackingID:* (default = null) — Define a custom trackingID to pass through the tracking framework. For events dispatched from the provided object. The id is made up your tracking id + the acual event.
handleEventsForObjects()method 
public function handleEventsForObjects(callbackDelegate:*, objects:Array, prefixes:Array, returnEventObjects:Boolean = false, cycleThroughTracking:Boolean = false):voidParameters
callbackDelegate:*
 
objects:Array
 
prefixes:Array
 
returnEventObjects:Boolean (default = false)
 
cycleThroughTracking:Boolean (default = false)
he()method 
public function he(obj:IEventDispatcher, callbackDelegate:String, callbackPrefix:Boolean, returnEventObjects:Boolean = false, cycleThroughTracking:Boolean = false, cycleAllThroughTracking:String = "false", trackingID:* = null):void

A shortcut for the handleEvents method.

Parameters
obj:IEventDispatcher
 
callbackDelegate:String
 
callbackPrefix:Boolean
 
returnEventObjects:Boolean (default = false)
 
cycleThroughTracking:Boolean (default = false)
 
cycleAllThroughTracking:String (default = "false")
 
trackingID:* (default = null)

See also