Right - the listener would have to be added to the stage, with a
callback on the pop up.  The point is that, even without such a
listener, things eventually grow (albeit slowly).

Another interesting (and possibly related) case is when you add a weak
reference to track if something still exists.  When I add and remove
dialogs, the first one seems to stay in existence forever, no matter
what (though the others go away just fine).  This even happens if I
don't add it to the stage at all.  All that needs to happen is the
TitleWindow must have a child, and I get this behavior.



-- CODE EXAMPLE ---

--- MyApp.mxml ---

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
        xmlns:mx="http://www.adobe.com/2006/mxml"; 
        xmlns:local="*"
        layout="vertical">
        <mx:Script>
                <![CDATA[
                        import mx.managers.PopUpManager;
                        import flash.utils.setTimeout;
                        
                        public var popUps:Array = []
                        
                        public function addObject():void
                        {
                                var dialog:LoginDialog = new LoginDialog();
                                
addEventListener("enterFrame",dialog.sayHi,false,0,true);
                                popUps.push(dialog);
                                trace("adding "+dialog);
                        }
                        
                        public function removeAllObjects():void
                        {
                                while(popUps.length>0){
                                        trace("removing "+popUps.pop());
                                }
                        }
                        
                ]]>
        </mx:Script>
        <mx:Button label="add" click="addObject()" /> 
        <mx:Button label="remove" click="removeAllObjects()" /> 
</mx:Application>



--- LoginDialog.mxml ---

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"; title="Login" >
        <mx:Script>
        <![CDATA[
                import mx.core.Application;
                import mx.binding.utils.ChangeWatcher;

        public var counter:int=0;
        
        public function sayHi(event:Event = null):void
        {
                if(counter++%30==0)
                        trace("I'm alive - "+this);
        }

        ]]>
        </mx:Script>
        <mx:Button />   
</mx:TitleWindow>

--- In flexcoders@yahoogroups.com, "Alex Harui" <[EMAIL PROTECTED]> wrote:
>
> Please explain further.  Calling myPopUp.addEventListener will not keep
> the popup in memory.  Instead the popup gets a reference to the object
> that will be called when the event is dispatched.
> 

Reply via email to