Tuesday, June 30, 2009

Loading Remote SWFs and parameters

Here is another example of one SWF loading another SWF and how parameters can be passed through the url.

The main application (called Loader1) has a panel which displays information about the current application, parameters, url etc.

The main application loads a remote application SWF (called Loader2) which also has the same panel displaying information about the application, parameters, url, etc. The differences are highlighted in bold.

Here is the code for loading a remote swf - notice how parameters are passed into the url:
private function loadRemoteSWF():void {
    var remoteSwfUrl:String = 
        "http://keg.cs.uvic.ca/flexdevtips/loaders/Loader2.swf?loaderurl=hello";
    var loader:SWFLoader = new SWFLoader();
    loader.addEventListener(Event.COMPLETE, remoteSWFLoaded);
    loader.load(remoteSwfUrl);
}

private function remoteSWFLoaded(event:Event):void {
    var loader:SWFLoader = event.currentTarget as SWFLoader;
    ui.addChild(loader.content); // ui is a UIComponent
}

In the remote application you can access the parameters that were passed in from the main application through the SWFLoader by the parameters property, but you MUST be inside the remote application MXML (e.g. in this case in Loader2.mxml), otherwise if you use Application.application.parameters this will refer to the parameters from the main application and not the ones that were passed in using the SWFLoader.


Source Code:

No comments: