Packagenet.guttershark.events
Classpublic class EventManager

The EventManager class simplifies events and provides shortcuts for event listeners for numerous AS3 top level classes, and component events on an opt-in basis.

You can opt in to having the EventManager send events through the tracking framework.


Example
Using EventManager with a MovieClip.
 
  import net.guttershark.events.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 will only be called if you have them defined. Your callback methods must be defined with the specified prefix, plus the name of the event. Specified in the below tables.

Passing the originating event 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.events.EventManager;
  import net.guttershark.events.delegates.FLVPlaybackEventListenerDelegate;
  var em:EventManager = EventManager.gi();
  em.addEventListenerDelegate(FLVPlayback,FLVPlaybackEventListenerDelegate);
  em.handleEvents(myFLVPlayback,this,"onMyFLVPlayback");
  

Adding support for tracking:
 
  import net.guttershark.events.EventManager;
  var em:EventManager = EventManager.gi();
  em.handleEvents(mc,this,"onMyMC",false,true);
  

Using the EventManager in a loop situation for unique tracking:
 
  import net.guttershark.events.EventManager;
  var em:EventManager = EventManager.gi();
  for(var i:int = 0; i < myClips.length; i++)
  {
      em.handleEvents(myClips[i],this,"onClip",false,true,"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,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

Supported Guttershark Classes:

ObjectEventListenerDelegateEvents
PreloadControllerPreloadControllerEventListenerDelegateComplete,Progress,AssetComplete
XMLLoaderNAComplete

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 IEventHandlerDelegate.
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 a target object.
EventManager
  
handleEventsForObjects(callbackDelegate:*, objects:Array, prefixes:Array, returnEventObjects:Boolean = false, cycleThroughTracking:Boolean = false):void
EventManager
Method detail
addEventListenerDelegate()method
public function addEventListenerDelegate(klassOfObject:Class, klassHandler:Class):void

Add a custom IEventHandlerDelegate. The class must be an implementation of IEventHandlerDelegate.

Parameters
klassOfObject:Class
 
klassHandler:Class
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 in this manager.
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 a target object.

Parameters
obj:IEventDispatcher — The object to add event listeners to.
 
callbackDelegate:String — callbackDelegate 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)