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'.
>


Reply via email to