| Package | net.guttershark.managers |
| Class | public final class EventManager |
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.
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.
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");
import net.guttershark.managers.EventManager;
var em:EventManager = EventManager.gi();
var mc:MovieClip = new MovieClip();
em.handleEvents(mc,this,"onMyMC",false,true);
function onMyMCClick(){}
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>
<track id="onClipClick0">
<atlas>...</atlas>
<webtrends>...</webtrends>
</track>
<track id="onClipClick1">
<atlas>...</atlas>
<webtrends>...</webtrends>
</track>
</tracking>
Supported TopLevel Flashplayer Objects and Events:
| Object | Events |
| DisplayObject | Added,AddedToStage,Activate,Deactivate,Removed,RemovedFromStage |
| InteractiveObject | Click,DoubleClick,MouseUp,MouseDown,MouseMove,MouseOver,MouseWheel,MouseOut,FocusIn, FocusOut,KeyFocusChange,MouseFocusChange,TabChildrenChange,TabIndexChange,TabEnabledChange |
| Stage | Resize,Fullscreen,MouseLeave |
| TextField | Change,Link |
| Timer | Timer,TimerComplete |
| Socket | Connect,Close,SocketData |
| LoaderInfo | Complete,Unload,Init,Open,Progress |
| Camera | Activity,Status |
| Microphone | Activity,Status |
| NetConnection | Status |
| NetStream | Status |
| FileReference | Cancel,Complete,Open,Select,UploadCompleteData |
| Sound | Progress,Complete,ID3,Open |
Supported Guttershark Classes:
| Object | EventListenerDelegate | Events |
| PreloadController | NA | Complete,Progress,AssetComplete,AssetError |
| XMLLoader | NA | Complete |
| SoundManager | NA | Change |
| FLV | NA | Start,Stop,BufferFull,BufferEmpty,BufferFlush,SeekNotify,SeekInvalidTime, Meta,CuePoint,Progress,StreamNotFound |
Supported Components:
| Component | EventHandlerDelegate | Events |
| FLVPlayback | FLVPlaybackEventDelegate | Play,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:
| Method | Defined 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 | ||
| addEventListenerDelegate | () | method |
public function addEventListenerDelegate(klassOfObject:Class, klassHandler:Class):voidAdd a custom EventListenerDelegate - the class must be an implementation of EventListenerDelegate.
ParametersklassOfObject:Class |
|
klassHandler:Class |
| disposeEvents | () | method |
public function disposeEvents(obj:IEventDispatcher):voidA shorcut for the disposeEventsForObject method, this will used in favor of the latter in 1.0.
Parametersobj:IEventDispatcher — The object in which events are being managed.
|
| disposeEventsForObject | () | method |
public function disposeEventsForObject(obj:IEventDispatcher):voidDispose of events for an object that was being managed by this event manager.
Parametersobj:IEventDispatcher — The object in which events are being managed.
|
| disposeEventsForObjects | () | method |
public function disposeEventsForObjects(... objects):voidDispose of events for multiple objects.
Parameters... objects — An array of objects whose events should be disposed of.
|
| gi | () | method |
| handleEvents | () | method |
public function handleEvents(obj:IEventDispatcher, callbackDelegate:String, callbackPrefix:Boolean, returnEventObjects:Boolean = false, cycleThroughTracking:Boolean = false, cycleAllThroughTracking:String = "false", trackingID:* = null):voidAdd auto event handling for the target object.
Parametersobj: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.
obj:IEventDispatcher |
|
callbackDelegate:String |
|
callbackPrefix:Boolean |
|
returnEventObjects:Boolean (default = false) |
|
cycleThroughTracking:Boolean (default = false) |
|
cycleAllThroughTracking:String (default = "false") |
|
trackingID:* (default = null) |
See also