Choice 1 – Bad
The application:
<?xml version="1.0" encoding="utf-8"?><br></br><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" ><br></br><mx:Script><br></br><![CDATA[ <br></br> private function initModule(e:Event):void {<br></br> var ichild:* = myModule.child as IMyModule; <br></br> if (ichild != null) { <br></br> ichild.initModule();<br></br> }<br></br> }<br></br>]]><br></br></mx:Script><br></br>...<br></br><mx:ModuleLoader id="myModule" url="myModule.swf" <b>ready="initModule(event);"</b>/> <br></br>...<br></br></mx:Application><br></br>
The module:
<?xml version="1.0" encoding="utf-8"?><br></br><mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" implements="IMyModule" ><br></br><mx:Script><br></br><![CDATA[ <br></br>[Bindable]<br></br>public serviceName:String = new String("http://localhost:8080/myService");<br></br> <br></br>public function initModule():void{<br></br> <b>myHService.send();<br></br> //it will fail here!!! because myHService.url = null <br></br> //the module is loaded, not initialized<br></br></b>}<br></br>]]><br></br></mx:Script><br></br>...<br></br><mx:HTTPService id="myHService" url="{serviceName}" method="GET" <br></br> useProxy="false" resultFormat="e4x" showBusyCursor="true" /><br></br>...<br></br></mx:Module><br></br>
This will not work because the ready event is sent when the swf is loaded not initialized.
Choice 2 – Ok
The application:
<?xml version="1.0" encoding="utf-8"?><br></br><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" ><br></br><mx:Script><br></br><![CDATA[ <br></br> private function initModule(e:Event):void {<br></br> var ichild:* = myModule.child as IMyModule; <br></br> if (ichild != null) { <br></br> ichild.initModule();<br></br> }<br></br> }<br></br>]]><br></br></mx:Script><br></br>...<br></br><mx:ModuleLoader id="myModule" url="myModule.swf" ready="initModule(event);"/> <br></br>...<br></br></mx:Application><br></br>
The module:
<?xml version="1.0" encoding="utf-8"?><br></br><mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" implements="IMyModule" <br></br> <b>creationComplete="creationComplete(event)"</b>><br></br><mx:Script><br></br><![CDATA[ <br></br>[Bindable]<br></br>public serviceName:String = new String("http://localhost:8080/myService");<br></br> <br></br>public function initModule():void{<br></br> //other initialization<br></br>}<br></br><br></br>public function creationComplete(event:Event):void{<br></br> myHService.send();<br></br>}<br></br>]]><br></br></mx:Script><br></br>...<br></br><mx:HTTPService id="myHService" url="{serviceName}" method="GET" <br></br> useProxy="false" resultFormat="e4x" showBusyCursor="true" /><br></br>...<br></br></mx:Module><br></br>
This will work.