« back

Fleb Framework: Central Event System

The Fleb Framework uses a central event system you can also easily use for your own events. This event system is not written by me, you can find the original source here.

net.kaegi.events.FlebEvent

public static const STAGE_RESIZE:String = "FlebEvent.onStageResize";
public static const CHANGE_LANGUAGE:String = "FlebEvent.onChangeLanguage";				
public static const SWFADDRESS:String = "FlebEvent.onSWFAddress";
public static const DEEPLINK:String = "FlebEvent.onDeeplink";
public static const PAGE_LOAD_PROGRESS:String = "FlebEvent.onPageLoadProgress";
public static const PAGE_LOAD_COMPLETE:String = "FlebEvent.onPageLoadComplete";

Usage

Normally, you would use it like this:

//import
import net.kaegi.events.EventCentral
import net.kaegi.events.FlebEvent
// add listener
EventCentral.getInstance().addEventListener(FlebEvent.STAGE_RESIZE, stageResizeHandler);
// listener function
function stageResizeHandler(event:FlebEvent) {
    // event.params.stageWidth       
    // event.params.stageHeight
}

…but to make it even more compact, the initialisation of CentralEvent is already done for your convenience in net.kaegi.utils.VarCentral (stored in the global var “flebEvents”), which is also a singleton and is intialised at the very beginning of a flebsite (in net.kaegi.fleb.Startup). So the rewritten code from above looks like this:

//import
import net.kaegi.utils.VarCentral
// shortcut
var varcentral:Object = VarCentral.getInstance().vars
// add listener
varcentral.flebEvents.addEventListener(FlebEvent.STAGE_RESIZE, stageResizeHandler);
// listener function
function stageResizeHandler(event:FlebEvent) {
    // event.params.stageWidth       
    // event.params.stageHeight
}

STAGE_RESIZE

See code above.

CHANGE_LANGUAGE

import net.kaegi.utils.VarCentral
var varcentral:Object = VarCentral.getInstance().vars
varcentral.flebEvents.addEventListener(FlebEvent.CHANGE_LANGUAGE, changeLanguageHandler);
function changeLanguageHandler(event:FlebEvent) {
    // use the global variable:
    // varcentral.flebLanguage (uint)
}

SWFADDRESS

You probably will never use this event as it is handled internally by the fleb framework.

import net.kaegi.utils.VarCentral
var varcentral:Object = VarCentral.getInstance().vars
varcentral.flebEvents.addEventListener(FlebEvent.SWFADDRESS, swfaddressHandler);
function swfaddressHandler(event:FlebEvent) {
    // event.params.btn (NavigationButton2)
    // event.params.siteFirstRun (Boolean)
    // event.params.languageHasChanged (Boolean)
}

DEEPLINK

import net.kaegi.utils.VarCentral
var varcentral:Object = VarCentral.getInstance().vars
varcentral.flebEvents.addEventListener(FlebEvent.DEEPLINK, deeplinkHandler);
function deeplinkHandler(event:FlebEvent) {
    // use the global variable:
    // varcentral.flebDeeplink (Array)
}

PAGE_LOAD_PROGRESS

You will probably never use this event if you use the methods “onPageLoadStart()”, “onPageLoadProgress()” and “onPageLoadComplete()” which are triggered simultaneously in “Base.as”.

import net.kaegi.utils.VarCentralh
var varcentral:Object = VarCentral.getInstance().vars
varcentral.flebEvents.addEventListener(FlebEvent.PAGE_LOAD_PROGRESS, pageLoadProgressHandler);
function pageLoadProgressHandler(event:FlebEvent) {
    // event.params.loader (net.kaegi.loaders.LoadChildAsset)
}

PAGE_LOAD_COMPLETE

You will probably never use this event if you use the methods “onPageLoadStart()”, “onPageLoadProgress()” and “onPageLoadComplete()” which are triggered simultaneously in “Base.as”.

import net.kaegi.utils.VarCentral
var varcentral:Object = VarCentral.getInstance().vars
varcentral.flebEvents.addEventListener(FlebEvent.PAGE_LOAD_COMPLETE, pageLoadCompleteHandler);
function pageLoadCompleteHandler(event:FlebEvent) {
    // event.params.loader (net.kaegi.loaders.LoadChildAsset)
}

Create you own central events!

Have a look at “ProjectEvent.as”. There you can add your own events. Imagine for example events like “SOUND_PLAYING”, “LOGGED_IN”, “BUTTON_XY_CLICKED” etc.

Step 1: Add the event

Open “ProjectEvent.as” and add your event:

// ...
public static const SOUND_PLAYING:String = "ProjectEvent.onSoundPlaying";
public static const YOUR_EVENT:String = "ProjectEvent.onYourEvent";	
// ...

Step 2: Dispatch the event

Note that you can have any number of parameters (of any type) dispatched with the event:

import net.kaegi.utils.VarCentral
var varcentral:Object = VarCentral.getInstance().vars
varcentral.flebEvents.dispatchEvent(new ProjectEvent(ProjectEvent.YOUR_EVENT, {anyParameter:"here is my parameter", test:[1,2,3,4]}));

Step 3: Add an event listener

import net.kaegi.utils.VarCentral
var varcentral:Object = VarCentral.getInstance().vars
varcentral.flebEvents.addEventListener(ProjectEvent.YOUR_EVENT,onYourEvent);

Step 4: Action!

import ProjectEvent;
function onYourEvent(event:ProjectEvent) {
     trace("ProjectEvent.YOUR_EVENT dispatched! anyParameter: "+event.params.anyParameter+", test: "+event.params.test; 
}

Remove events

Don't forget to remove events when they are not needed anymore!

fleb-framework-central-event-system.txt · Last modified: 2011/11/11 18:55 (external edit)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki