Finally found the bug.  If you are using the Adobe FIG Callout
component watchout for the updateDisplay list method implementation.
They are telling the Callout on update x=startX and y=startY instead
of x=x and y=y or just comment it out like I did and on update don't
reposition it, leave x,y alone.


--- In [email protected], "flexaustin" <flexaus...@...> wrote:
>
> So I have this PopupManager, in my flex app, that creates a popup on
> the main screen of the application, but I have an eventlistener set on
> the main application, which calls a function that tells the Popup to
> follow the x,y of a sprite a couple displayobjects deep in the
> displaylist.
> 
> So a visual in words:
> 
> SpriteToFollow (aka ns:NodeSprite)
>   SpriteToFollowHolder
>     MainSpriteHolder
>       Applcation/Stage 
> 
> So Popup once popped up follows SpriteToFollow.  My Popup has two
> states min/max where min is 250px by 150px and max is 400px by 400px.
> 
> When I change states my popup jumps around on the stage. What I have
> found is when changing min/max or max/min the Popup keeps jumping back
> to where its x,y were when it was first created. Then a frame later it
> jumps back to follow the SpriteToFollow.
> 
> 
> Here is my code that creates and updates the Popup. Maybe someone can
> help me understand why it keeps going back to where it started?
> 
>       public function creatLaunchSuperDetails( ns:NodeSprite ) :
> SuperDetailCallout
>                       {
>                               if(sdc){removeStageFrameEventListener()};
>                               if(sdc){PopUpManager.removePopUp(sdc)};
>                               createSDC( ns );
>                               PopUpManager.addPopUp(sdc, this, false);
>                               return sdc;
>                                       
>                       }
> 
> private function createSDC(ns:NodeSprite) : void
>                       {
>                               _ns = ns;
>                               sdc = new SuperDetailCallout();
>                               var p:Point = ns.localToGlobal(new Point(0,0));
>                               sdc.x = p.x;
>                               sdc.y= p.y;
>                               
>                                   
>                                   this.addEventListener(Event.ENTER_FRAME, 
> handleEnterFrameEvent);
>                                   
>                                   if(sdc && _ns.data){
>                                       var type:String = _ns.data.type != null 
> ? _ns.data.type : " ";
>                                       var name:String = _ns.data.name != null 
> ? _ns.data.name : " ";
>                                       sdc.title=String(name + " " +  type);
>                                   }else{
>                                       throw Error ("Nodes.data is " + 
> _ns.data);
>                                   }
>                     
>                     sdc.line1="Illegal download amount";
>                     sdc.line2="offline";
>                 
>                       }
>                       
>                       private function handleEnterFrameEvent(event:Event) : 
> void
>                       {
>                               var pt:Point = new Point(_ns.x, _ns.y);
>               pt = _ns.localToGlobal(new Point(0,0));
>                               trace( pt.x, pt.y);
>                               trace( 'x is ' + _ns.x + '  and y is ' + _ns.y);
>                               sdc.move( pt.x, pt.y );
> 
>                       }
>


Reply via email to