Olá, estou com esse problema a semanas, tentei muuuita coisa já e ainda estou empacado, mostrarei o código e vejam se um de vocês poderá me ajudar.
Meu Application “TestePopUp.mxml”
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Script>
<![CDATA[
private var testePopUpController:TestePopUpController;
]]>
</fx:Script>
<s:initialize>
<![CDATA[
testePopUpController = new TestePopUpController(this);
]]>
</s:initialize>
<mx:TabNavigator x="166" y="102" width="533" height="293" creationPolicy="all" id="tabNav">
<s:NavigatorContent label="Tab 1" width="100%" height="100%">
<s:Button x="269" y="96" label="Button" />
</s:NavigatorContent>
<s:NavigatorContent label="Tab 2" width="100%" height="100%">
<mx:ModuleLoader x="10" y="10" width="511" height="239" id="modulo">
</mx:ModuleLoader>
</s:NavigatorContent>
</mx:TabNavigator>
</s:Application>
Meu “Controller” do application: TestePopUpController.as
package
{
import mx.controls.Alert;
public class TestePopUpController
{
private var _testePopUp:TestePopUp;
public function TestePopUpController(testePopUp:TestePopUp)
{
this._testePopUp = testePopUp;
this._testePopUp.tabNav.selectedIndex = 1;
this.carregaModulo();
}
private function carregaModulo():void
{
// _testePopUp.modulo.url = "ModuloQualquer.swf";
_testePopUp.modulo.loadModule("ModuloQualquer.swf");
}
}
}
Meu módulo que é carregado na segunda aba: “ModuloQualquer.mxml”
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" width="511" height="239">
<fx:Script>
<![CDATA[
private var moduloQualquerController:ModuloQualquerController;
]]>
</fx:Script>
<mx:initialize>
<![CDATA[
moduloQualquerController = new ModuloQualquerController(this);
]]>
</mx:initialize>
<s:Button label="Chama PopUp" x="149" y="261" id="abrePopUp" click="moduloQualquerController.abrePopUp(event);"/>
</mx:Module>
Meu Controller do módulo: “ModuloQualquerController.as”
package
{
import flash.display.DisplayObject;
import flash.events.MouseEvent;
import flashx.textLayout.elements.GlobalSettings;
import mx.controls.Alert;
import mx.core.Application;
import mx.events.CloseEvent;
import mx.managers.PopUpManager;
import spark.components.Application;
import spark.components.TitleWindow;
public class ModuloQualquerController
{
import mx.managers.PopUpManager;
import spark.components.TitleWindow;
private var _moduloQualquer:ModuloQualquer;
private var titleWindow:TitleWindow;
public function ModuloQualquerController(moduloQualquer:ModuloQualquer)
{
this._moduloQualquer = moduloQualquer;
}
public function abrePopUp(event:MouseEvent):void
{
titleWindow = PopUpManager.createPopUp(DisplayObject(_moduloQualquer.systemManager),TitleWindow, true, null) as TitleWindow;
titleWindow.title ="Title Window";
titleWindow.width = 136;
titleWindow.addEventListener(CloseEvent.CLOSE, closeMe, false, 0, true);
}
private function closeMe(e:CloseEvent):void
{
PopUpManager.removePopUp(titleWindow);
}
}
}
O Componente “Teste.mxml” só para ele ter o que mostrar no PopUp
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:Button x="165" y="269" label="Button"/>
</s:Group>
O que acontece é o seguinte:
Quando eu clico no botão que carregará o popup, ele lança o erro como se a referencia do objeto fosse nula, eu acredito que ele esteja reclamando da minha referencia ao módulo, que no caso é o parent da titleWindow = PopUpManager.createPopUp(_moduloQualquer, Teste, true) as TitleWindow; , porém eu verifiquei e a referencia não é nula.
Alguém?