See sharedCode portion of my presentation on modules at
blogs.adobe.com/aharui

________________________________

From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On
Behalf Of Mark
Sent: Wednesday, March 28, 2007 11:48 AM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] PopUpManager Problem



I need some help with an error I am getting when using the popupmanager.
Essentially the problem I am having is if I dynamically load SWFs from
my main application and more than one of the SWF uses the popupmanager I
receive an error. The specific error I am getting is:
TypeError: Error #1009: Cannot access a property or method of a null
object reference.
    at mx.managers::PopUpManager$/addPopUp()
    at mx.controls::Alert$/show()
    at Tab2/::onClick()
    at Tab2/___Button1_click()

My test app to reproduce this problem is essentially on the main
application a tabnavigator with two VBox as the tabs. The SWF files then
get loaded dynamically into those VBox. The two SWF files only contain a
button to press and it displays an Alert (the builtin Alert uses
PopUpManager). 
Has anyone seen this error before! and can shed some insight? 

Thanks in advance. 
--Mark

Below is my code to reproduce this:

PopUpApp.as
package
{
    import mx.core.Application;
    import flash.events.Event;

    public class PopUpApp extends Application
    {
        [Bindable] public var debug:Boolean;
        
        public function PopUpApp()
        {
            super();    //Invoke the Application superclass
            this.addEventListener("creationComplete",
onCreationComplete);
        }
        
        ! private function onCreationComplete(event:Event):voi! d
&nb sp;       {
            debug = (this.url.indexOf("-debug.swf")) > -1 ? true :
false;
        }
    }
}

PopUpProblem.mxml
<?xml version="1.0" encoding="utf-8"?>
<local:PopUpApp
    xmlns:local="*"
    xmlns:mx="http://www.adobe.com/2006/mxml";
    layout="absolute"
    width="100%"
    height="100%"
    creationComplete="onCreationComplete();">

    <mx:Script>
        <![CDATA[
            import mx.events.ModuleEvent;
            import mx.modules.ModuleManager;            import
mx.modules.IModuleInfo;

            public var tab1Mod:IModuleInfo;
            public var tab2Mod:IModuleInfo;

            private function onCreationComplete():void
            {
                if (this.debug)
                {
                    tab1Mod = ModuleManager.getModule("Tab1-debug.swf");
                    tab2Mod = ModuleManager.getModule("Tab2-debug.swf");
  ! ;            &nbs! p; }
                else
                {
                    tab1Mod = ModuleManager.getModule("Tab1.swf");
                    tab2Mod = ModuleManager.getModule("Tab2.swf");
                }

                tab1Mod.addEventListener(ModuleEvent.READY,
tab1ModReady);
                tab2Mod.addEventListener(ModuleEvent.READY,
tab2ModReady);
                tab1Mod.load();
  &! nbsp;             tab2Mod.load();
            }

            private function tab1ModReady(event:ModuleEvent):void
            {
                tab1.addChild(tab1Mod.factory.create() as
DisplayObject);
            }

            private function tab2ModReady(event:ModuleEvent):void
            {
                tab2.addChild(tab2Mod.factory.create() as
DisplayObject);
            }
      !   ]]>
    </mx:Script>

!  &n bsp;  <mx:TabNavigator width="100%" height="100%">
        <mx:VBox id="tab1" label="Tab 1" width="100%" height="100%" />
        <mx:VBox id="tab2" label="Tab 2" width="100%" height="100%" />
    </mx:TabNavigator>

</local:PopUpApp>


Tab1.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Module
    xmlns:mx="http://www.adobe.com/2006/mxml";
    layout="horizontal"
    percentWidth="100" 
    percentHeight="100">

    <mx:Script>
        <![CDATA[
        import mx.controls.Alert;
        import flash.events.MouseEvent;

   ! ;     private function onClick(event:MouseEvent):void
        {
            mx.controls.Alert.show("Tab1 Alert");
        }
        ]]>
    </mx:Script>

    <mx:Button label="Button" click="onClick(event);"/>

</mx:Module>

Tab2.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Module
    xmlns:mx="http://www.adobe.com/2006/mxml";
    layout="horizontal"
    percentWidth="100" 
    percentHeight="100">

    <mx:Script>
        <![CDATA[
        import mx.controls.Alert;
      &! nbsp; import flash.events.MouseEvent;

  !   & nbsp;   private function onClick(event:MouseEvent):void
        {
            mx.controls.Alert.show("Tab2 Alert");
        }
        ]]>
    </mx:Script>

    <mx:Button label="Button" click="onClick(event);"/>

</mx:Module>



 

Reply via email to