Well my container is about 4 classes deep. What I am focused on now is the CarouselImage class as each carousel comp contains up to 8 of these and their can be 2000 carousel components...see my delim? I know at best it will be next to impossible to use but it has to be done.
I tried converting my CarouselImage to a flexsprite but Flex rejects it saying it needs to implement IUIComponent. --- In [email protected], "Michael Schmalle" <[EMAIL PROTECTED]> wrote: > > Jason, > What I suggested is probably a bit to complex for what you need. It's kind > of a reimplementation of what you are doing. > > 1. Subclass UIComponent to make your container. > 2. Create the layout algorithm in that component. > 3. Create a subclass of FlexSprite that is your loader component. > 4. Add the FlexSprite subclass instances (your content) to your UIComponent > container class with custom layout. > 5. Add the UIComponent class to a Container. > > The above is not really a solution for you right now I'm sure, I was just > saying this is what I would do to get maximum performance and memory > management. > > The reason I say this is I have no idea how you are laying out those > instances with reflection etc. How are you laying them out (with what layout > algorithm) ? > > Mike > > > On Fri, Oct 17, 2008 at 10:21 AM, flexaustin <[EMAIL PROTECTED]> wrote: > > > Michael, I have tried using Flexsprite but throws errors about needing > > to implementing IUIcomponent. Did I miss something and give up to early? > > > > --- In [email protected] <flexcoders%40yahoogroups.com>, "Michael > > Schmalle" > > > > <teoti.graphix@> wrote: > > > > > > Doug, Jason, > > > Since I am a self-centered person that doesn't like to be misunderstood, > > > ;-), I could have brought up the 4000 object issue. In previous > > threads with > > > Jason, he said this was a requirement from the higher order. So I > > left it > > > where it was, 4000 objects. > > > > > > As far as the IUIComponent issue, it is Container that requires them not > > > 'Flex' itself. > > > > > > This is where as flex projects, Web 2.0 and performance are reaching > > a point > > > where it's not just making a Flash IDE animation anymore. > > > > > > When the requirements of these projects come to this level there is more > > > engineering involved and Flex out of the box is not going to handle > > > situations like this. > > > > > > The absolute way to do this is creating a UIComponent subclass that > > is the > > > container, creating your layout algorithm in this component. Subclass > > > FlexSprite, make that your content loader component. > > > > > > Then instantiate the content components in the UIComponent > > container. This > > > is the lean version of your design I envision. You could even > > recycle the > > > content renderers in your container component.... Lot's of things > > you could > > > do ;-) > > > > > > Mike > > > > > > > > > On Wed, Oct 15, 2008 at 10:47 PM, flexaustin <flexaustin@> wrote: > > > > > > > Doug, what would you go with? Sprite? > > > > > > > > I thought sprite, but you need to implement all the IUIComponent stuff > > > > or use composition correct? Wouldn't composition reduce the benefits > > > > gained by using Sprite? > > > > > > > > Doug, if you message me and I can tell you where to see the component. > > > > > > > > jason (underscore) newport {at) hot mail > > > > > > > > --- In [email protected] <flexcoders%40yahoogroups.com><flexcoders% > > 40yahoogroups.com>, > > > > "Doug > > > > McCune" <doug@> wrote: > > > > > > > > > > You've got 4,000 things all moving around at once? Are all 4,000 of > > > > those > > > > > actually visible? 4,000 UI components seems like a lot for any > > layout > > > > > manager to have to deal with. I'd try to focus on figuring out how > > > > to reduce > > > > > the number of UIComponents before I worried about how much memory > > > > each one > > > > > is taking up. I may be totally off base, but I can't imagine a > > scenario > > > > > where you want 4,000 images all on the screen at the same time. > > > > > > > > > > And if you do really need to load 4,000 swfs all at the same time > > > > then you > > > > > probably want something that's lighter than custom UIComponent > > classes, > > > > > which would keep those 4,000 objects out of the normal > > > > > invalidation/validation cycles of the display list. > > > > > > > > > > Doug > > > > > > > > > > On Wed, Oct 15, 2008 at 1:34 PM, Michael Schmalle > > > > > <teoti.graphix@>wrote: > > > > > > > > > > > A side note, > > > > > > You are doing some very expensive leg work in the 'content' > > setter. > > > > > > > > > > > > You need to break that out into commitProperties() and > > > > updateDisplayList(). > > > > > > > > > > > > You would get a huge performance increase for sure. > > > > > > > > > > > > As far as the memory, doesn't look to weird, event listeners > > > > without weak > > > > > > references can make thing hang around as well. > > > > > > > > > > > > Mike > > > > > > > > > > > > > > > > > > On Wed, Oct 15, 2008 at 3:08 PM, flexaustin <flexaustin@> wrote: > > > > > > > > > > > >> So I have this base component, that when running profiler, > > says its > > > > > >> eating up tons of memory. I have about 4000 of these at one > > time in > > > > > >> my Flex app (see component code below). This base component is > > > > > >> extended by two other components, which are then extended by > > two more > > > > > >> components each so 3 or 4 levels above this base component. > > > > > >> > > > > > >> 1. My first question is does the profiler just point to the base > > > > class > > > > > >> or are there actually 4000 of these being created outside of > > their > > > > > >> extended children? > > > > > >> > > > > > >> 2. My 2nd question is is their anything wrong with the code > > > > below? Why > > > > > >> is it eatin memory? The parameter "content" when pulled in is > > a swf > > > > > >> file (icon) that is 5kb each so 5kb * 4000... you get the math. > > > > > >> > > > > > >> When I run this progam the CarouselImage's are using up 30% > > to 35% of > > > > > >> my apps memory usage. And my app is eating up 725,000kb of > > mem usage, > > > > > >> thus crashing my pretty decent computer. > > > > > >> > > > > > >> // ----------- BEGIN CODE -------------------------------------- > > > > > >> package com.mysite.views.components > > > > > >> { > > > > > >> > > > > > >> import flash.display.DisplayObject; > > > > > >> import flash.system.ApplicationDomain; > > > > > >> > > > > > >> import mx.core.UIComponent; > > > > > >> import mx.events.ResizeEvent; > > > > > >> > > > > > >> public class CarouselImage extends UIComponent > > > > > >> { > > > > > >> // Content > > > > > >> private var _content:DisplayObject; > > > > > >> private var _contentWidth:Number; > > > > > >> private var _contentHeight:Number; > > > > > >> > > > > > >> public function CarouselImage(content:*=null) > > > > > >> { > > > > > >> super(); > > > > > >> > > > > > >> // Set content > > > > > >> this.content = content; > > > > > >> } > > > > > >> > > > > > >> // Properties > > > > > >> [Inspectable] > > > > > >> public function get content():DisplayObject > > > > > >> { > > > > > >> return _content; > > > > > >> } > > > > > >> > > > > > >> public function set content(value:*):void > > > > > >> { > > > > > >> if (_content != null) > > > > > >> { > > > > > >> removeChild(_content) > > > > > >> removeEventListener(ResizeEvent.RESIZE, handleResize); > > > > > >> } > > > > > >> > > > > > >> if (value is String) > > > > > >> { > > > > > >> try > > > > > >> { > > > > > >> value = ApplicationDomain.currentDomain.getDefinition(value); > > > > > >> } > > > > > >> catch (error:*) > > > > > >> { > > > > > >> // Do nothing > > > > > >> } > > > > > >> } > > > > > >> > > > > > >> if (value is Class) > > > > > >> value = new value(); > > > > > >> > > > > > >> _content = value as DisplayObject; > > > > > >> > > > > > >> if (_content != null) > > > > > >> { > > > > > >> _contentWidth = _content.width; > > > > > >> _contentHeight = _content.height; > > > > > >> > > > > > >> addChild(_content); > > > > > >> addEventListener(ResizeEvent.RESIZE, handleResize); > > > > > >> > > > > > >> scaleContent(); > > > > > >> } > > > > > >> > > > > > >> this.invalidateDisplayList(); > > > > > >> this.invalidateProperties(); > > > > > >> this.invalidateSize(); > > > > > >> } > > > > > >> > > > > > >> public function get contentWidth():Number > > > > > >> { > > > > > >> return _contentWidth; > > > > > >> } > > > > > >> > > > > > >> public function get contentHeight():Number > > > > > >> { > > > > > >> return _contentHeight; > > > > > >> } > > > > > >> > > > > > >> // Measure and draw > > > > > >> private function scaleContent():void > > > > > >> { > > > > > >> if (_content != null && width > 0 && height > 0) > > > > > >> { > > > > > >> // Width > > > > > >> _content.scaleX = width / contentWidth; > > > > > >> // Center the image > > > > > >> _content.x = (width - (contentWidth * _content.scaleX)) * 0.5; > > > > > >> > > > > > >> // Height > > > > > >> _content.scaleY = height / contentHeight; > > > > > >> // Center the image > > > > > >> _content.y = (height - (contentHeight * _content.scaleY)) * 0.5; > > > > > >> } > > > > > >> } > > > > > >> > > > > > >> // Event handlers > > > > > >> private function handleResize(event:ResizeEvent):void > > > > > >> { > > > > > >> scaleContent(); > > > > > >> this.invalidateDisplayList(); > > > > > >> this.invalidateProperties(); > > > > > >> this.invalidateSize(); > > > > > >> } > > > > > >> > > > > > >> } > > > > > >> } > > > > > >> // ----------------- END CODE > > ------------------------------------ > > > > > >> > > > > > >> > > > > > > > > > > > > > > > > > > -- > > > > > > Teoti Graphix, LLC > > > > > > http://www.teotigraphix.com > > > > > > > > > > > > Teoti Graphix Blog > > > > > > http://www.blog.teotigraphix.com > > > > > > > > > > > > You can find more by solving the problem then by 'asking the > > > > question'. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > Teoti Graphix, LLC > > > http://www.teotigraphix.com > > > > > > Teoti Graphix Blog > > > http://www.blog.teotigraphix.com > > > > > > You can find more by solving the problem then by 'asking the question'. > > > > > > > > > > > > > -- > Teoti Graphix, LLC > http://www.teotigraphix.com > > Teoti Graphix Blog > http://www.blog.teotigraphix.com > > You can find more by solving the problem then by 'asking the question'. >

