On Wed, Nov 19, 2008 at 1:55 AM, manfred.karrer <[EMAIL PROTECTED]> wrote: > is there an event dispatched when the callLater() is executed the last > time? [...]
Are you using callLater yourself? Or are you trying to figure out when will your validation methods will get run? When you set something to be called by using callLater, it will get added to a queue that will get processed at the handler for the Event.RENDER event, which will run as the last possible moment before the player runs a screen update. > we have the problem that a ui is rendered while a lot of other things are > going on at the application. so the flex framework calls internally > callLater() The framework will use callLater for it's validation cycles (again, it does nothing then except adding the function and arguments to a queue to be run later); hopefully it will clear out all the invalidations before it draws the frame, again, on it's handler for the RENDER event, but if something goes wrong or something is not well designed and something gets invalidated again then, it will try to figure it out on the ENTER_FRAME handler on the next frame (that is, it will draw the current frame without processing what has just been added to the queue) because there's nothing you can do after the RENDER handler gets run. This goes on, going from ENTER_FRAME to RENDERER handlers until nothing is dirty. > to avoid the performance peak. but we need to know when the > rendering of the ui is acually done, because some animation starts after > rendering. now it seems that the creationComplete event if fired at some > point, but the ui is not rendered fully but is delayed (depending on the > target machines speed) CREATION_COMPLETE is dispatched from a UIComponent (or one of it's subclasses, of course) after it's initialization phase has completed. That is, when the parent of your component has added your component, it will run initialize, that will make your component dispatch PREINITIALIZE, then your createChildren() method will be run. A first pass at invalidateProperties, invalidateSize and invalidateDisplay list will be run, and INITIALIZE will be dispatched. Only after the LayoutManager has completely cleared out your invalidations (only when your properties, size and layout have been processed completely that first time) will your component dispatch CREATION_COMPLETE. > for a certain time. is this assumption correct? is there an event or another > way how to gat the point when there is no more code to be executed which is > delayed via callLater()? so far i understand callLater() it introduces a If you're using call later yourself for your own methods, you shouldn't have any problems assuming that what you send it will get called before the current frame is rendered. Only if you call it too late (on something that's being called just before the frame is going to be rendered, probably on one of the validation methods, updateDisplayList, measure, commitProperties) will it run on the next frame. > uncotrollable asynchronity to the code execution. i have not investigated it > so far, so maybe i am wrong with my assumtions, but if it behaves like this, > i am wondering if callLater() is a good solution for avoiding the > performance peaks because of the downside of asynchronity. is there a way > how i can deactivate the callLater behaviour? callLater is a Good Thing for flex performance and the whole validation cycle is based upon it. You have to be careful, though, of how you build your components so that the dirty properties and be figured out quickly and in the correct order. I'm writing this very quickly so it might come out messy and disorganized, perhaps you might want to check out this short presentation, http://rojored.com/presentations/ts08/abrealey_gmontagne.presentation.pdf http://rojored.com/presentations/ts08/abrealey_gmontagne.slides.pdf I hope this helps, gabriel -- gabriel montagné láscaris comneno http://rojored.com t/506.8367.6794

