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.
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";
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 }
See code above.
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) }
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) }
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) }
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) }
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) }
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.
Open “ProjectEvent.as” and add your event:
// ... public static const SOUND_PLAYING:String = "ProjectEvent.onSoundPlaying"; public static const YOUR_EVENT:String = "ProjectEvent.onYourEvent"; // ...
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]}));
import net.kaegi.utils.VarCentral var varcentral:Object = VarCentral.getInstance().vars varcentral.flebEvents.addEventListener(ProjectEvent.YOUR_EVENT,onYourEvent);
import ProjectEvent; function onYourEvent(event:ProjectEvent) { trace("ProjectEvent.YOUR_EVENT dispatched! anyParameter: "+event.params.anyParameter+", test: "+event.params.test; }
Don't forget to remove events when they are not needed anymore!