The code for a SHOW event runs before things are drawn to the screen. Sound like something is causing an extra invalidation of the children so they aren't ready right away. Can you make a simple test case?
Alex Harui Flex SDK Developer Adobe Systems Inc.<http://www.adobe.com/> Blog: http://blogs.adobe.com/aharui From: [email protected] [mailto:[email protected]] On Behalf Of dfalling Sent: Friday, September 18, 2009 2:28 PM To: [email protected] Subject: [flexcoders] Re: Still struggling with creation complete I'm not sure how SHOW would help me as I want to make everything happen before rendering the child. As an experiment, I made the child createComponentsFromDescriptors and called validateNow() at the viewstack level. I also replaced the event listener with a timer since I have no idea what event to watch. All my attempts to make the child render itself aren't working- even if the timer waits for several seconds to allow an empty view to render, it still won't show up until after sliding in. Even once I get this working, I still won't know what event to listen for to know when the child's children are created. There's the lovely childrenCreationComplete event, but that's only dispatched for creation types of none and queued. Here's my current code: override public function set selectedIndex(value:int):void { _lastIndex = selectedIndex; if(value != _newIndex && value != _lastIndex && value >= 0 && _lastIndex >= 0) { _newIndex = value; var targetChild:Container = getChildAt(value) as Container; if (targetChild.mx_internal::numChildrenCreated < 0) { targetChild.createComponentsFromDescriptors(true); validateNow(); _creationTimer = new Timer(3000,1); _creationTimer.addEventListener(TimerEvent.TIMER,child_creation,false,0,true); _creationTimer.start(); return; } else { slideTabs(_lastIndex,_newIndex); } } } private function child_creation(event:Event):void { slideTabs(_lastIndex,_newIndex); } --- In [email protected]<mailto:flexcoders%40yahoogroups.com>, Alex Harui <aha...@...> wrote: > > I still believe that all children of a viewstack are created no matter the > creationpolicy. CreationPolicy affects the grandchildren. CreationComplete on > the child is long gone. Try listening to SHOW as well, and call validateNow > on the entire viewstack, not just the child. Children get their size from the > parent. > > Alex Harui > Flex SDK Developer > Adobe Systems Inc.<http://www.adobe.com/> > Blog: http://blogs.adobe.com/aharui > > From: [email protected]<mailto:flexcoders%40yahoogroups.com> > [mailto:[email protected]<mailto:flexcoders%40yahoogroups.com>] On > Behalf Of dfalling > Sent: Friday, September 18, 2009 12:09 PM > To: [email protected]<mailto:flexcoders%40yahoogroups.com> > Subject: [flexcoders] Still struggling with creation complete > > > > I have a viewstack that animates its children by sliding them in and out. It > works fine when the creationPolicy is set to all, but when it's set to auto, > uncreated views slide in blank, then render themselves. > > I thought that I could fix this by checking to see if a view has been created > yet (the only way I could figure out how to do this is > mx_internal::numChildrenCreated), and then trigger its creation with > createComponentFromDescriptor. For some reason this isn't working though- my > creationComplete function is never called...what am I doing wrong? > > override public function set selectedIndex(value:int):void > { > _lastIndex = selectedIndex; > > if(value != _lastIndex && value >= 0 && _lastIndex >= 0) > { > _newIndex = value; > var targetChild:Container = getChildAt(value) as Container; > if (targetChild.mx_internal::numChildrenCreated < 0) > { > targetChild.addEventListener(FlexEvent.CREATION_COMPLETE,child_creation,false,0,true); > createComponentFromDescriptor(targetChild.descriptor,true); > targetChild.validateNow(); > return; > } > else > { > slideTabs(_lastIndex,_newIndex); > } > } > } > > private function child_creation(event:Event):void > { > slideTabs(_lastIndex,_newIndex); > } >

