litebox
09.06.2009, 15:26
Есть mxml-форма (наследник класса Module), и есть класс приложения, который этот модуль загружает для использования. Делал по Адобовским примерам, все работает кроме одного: при обращении к элементам модуля (кнопки, текстовые поля) возвращается null.
Код формы:
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="300" height="180" >
<mx:Script><![CDATA[
// Defines the method that the application calls.
public function init():void
{
trace(getChildByName("btnOk"));
trace(btnOk);
}
]]></mx:Script>
<mx:Button x="80" y="150" label="Ok" width="65" id="btnOk"/>
<mx:Button x="155" y="150" label="Cancel" width="65" id="btnCancel"/>
</mx:Module>
Код класса:
package mapCreator
{
import flash.display.NativeWindowSystemChrome;
import flash.events.Event;
import flash.events.MouseEvent;
import mx.core.Window;
import mx.events.ModuleEvent;
import mx.modules.ModuleLoader;
public class NewMapWindow extends Window
{
private var loader:ModuleLoader;
public function NewMapWindow(caption:String)
{
loader = new ModuleLoader();
loader.addEventListener(ModuleEvent.READY, eventFormReady);
loader.loadModule("mapCreator/NewMapDialog.swf");
addChild(loader);
}
private function eventFormReady(e:ModuleEvent):void
{
loader.removeEventListener(ModuleEvent.READY, eventFormReady);
var newMap:NewMapDialog = loader.child as NewMapDialog;
newMap.init();
}
}
}
консоль:
[SWF] MapCreator.swf - 1*062*487 bytes after decompression
[SWF] mapCreator/NewMapDialog.swf - 93*177 bytes after decompression
[SWF] mapCreator/NewMapDialog.swf - 93*177 bytes after decompression
null
null
Код формы:
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="300" height="180" >
<mx:Script><![CDATA[
// Defines the method that the application calls.
public function init():void
{
trace(getChildByName("btnOk"));
trace(btnOk);
}
]]></mx:Script>
<mx:Button x="80" y="150" label="Ok" width="65" id="btnOk"/>
<mx:Button x="155" y="150" label="Cancel" width="65" id="btnCancel"/>
</mx:Module>
Код класса:
package mapCreator
{
import flash.display.NativeWindowSystemChrome;
import flash.events.Event;
import flash.events.MouseEvent;
import mx.core.Window;
import mx.events.ModuleEvent;
import mx.modules.ModuleLoader;
public class NewMapWindow extends Window
{
private var loader:ModuleLoader;
public function NewMapWindow(caption:String)
{
loader = new ModuleLoader();
loader.addEventListener(ModuleEvent.READY, eventFormReady);
loader.loadModule("mapCreator/NewMapDialog.swf");
addChild(loader);
}
private function eventFormReady(e:ModuleEvent):void
{
loader.removeEventListener(ModuleEvent.READY, eventFormReady);
var newMap:NewMapDialog = loader.child as NewMapDialog;
newMap.init();
}
}
}
консоль:
[SWF] MapCreator.swf - 1*062*487 bytes after decompression
[SWF] mapCreator/NewMapDialog.swf - 93*177 bytes after decompression
[SWF] mapCreator/NewMapDialog.swf - 93*177 bytes after decompression
null
null