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], "Michael Schmalle" <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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>, "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'. >

