Hey,

One more thing I suggest is having the buttons click event listener defined
with weak reference -
 button.addEventListener(MouseEvent.CLICK, handleMouseClick*,false,0,true*);

Regards,
Evyatar


On Tue, Sep 3, 2013 at 4:46 PM, Angelo Lazzari <[email protected]>wrote:

> Hi,
> this should be a good starting point to tuning your item render:
>
>
> http://solu-pedia.com/2013/04/10/apache-flex-mobile-app-performance-tuning-articles/
>
> Cheers
> Angelo
>
> www.redtulp.com
>
>
>
> 2013/9/3 Peter Ent <[email protected]>
>
> > Each time the itemRenderer's data is set, you are wiping out all of the
> > button in the TileGroup and re-creating them. That's a source of your
> slow
> > scrolling performance.
> >
> > As nice-and-easy as your approach is, it is better to add some more code
> > complexity and re-use those buttons.
> >
> > Here's one example: you could, for each itemRenderer, have a cache of
> > previously created buttons, which would be empty the first time the
> > itemRenderer was used. If you need 10 buttons but have less than 10
> (e.g.,
> > 0 the first time), "use" the buttons (explained below) you have
> previously
> > created and create the remaining, being sure to also put references to
> > them into your cache.
> >
> > If you have more buttons in your cache than you need, "use" the amount
> you
> > need and "deactivate" the ones you don't. That is, if you have 20 buttons
> > in the cache but only need 8, you'll deactivate the remaining 12.
> >
> > So "use" means to set a button's visible and includeInLayout properties
> to
> > true. "Deactivate" means to set a button's visible and includeInLayout
> > properties to false.
> >
> > I think an approach like this would have better performance for you. If
> > you can avoid setting includeInLayout, it will be even better since all
> > you will be doing is hiding/showing the buttons, but the itemRenederers
> > might not look right if you also don't remove them from the layout.
> >
> > Peter Ent
> > Flex SDK Team
> > Adobe Systems
> >
> > On 9/3/13 9:29 AM, "Federico De Maddalena" <[email protected]>
> > wrote:
> >
> > >Hi Ben
> > >I'm developing a mobile project, not desktop!
> > >Images in use are very small.
> > >Usevirtuallayout is set on true.
> > >The code is here:
> > >
> > >       <fx:Script>
> > >               <![CDATA[
> > >                       import spark.components.Button;
> > >                       import spark.core.ContentCache;
> > >
> > >                       import events.SchedaEvent;
> > >
> > >                       static public const s_imageCache:ContentCache=new
> > ContentCache();
> > >
> > >                       override public function set
> > data(value:Object):void
> > >                       {
> > >                               super.data=value;
> > >                               lezione.text=value.titolo;
> > >
> > img.source="img/lez/"+value.lezione+"g.png";
> > >
> > >                               schede.removeAllElements();
> > >                               for(var i:int=0; i<value.schede.length;
> > i++)
> > >                               {
> > >                                       var button:Button=new Button();
> > >                                       button.label=String(i+1);
> > >                                       button.id=value.schede[i];
> > >                                       button.height=40;
> > >                                       button.width=40;
> > >
> > button.addEventListener(MouseEvent.CLICK, handleMouseClick);
> > >                                       schede.addElement(button);
> > >                               }
> > >                       }
> > >
> > >                       private function
> > handleMouseClick(event:MouseEvent):void
> > >                       {
> > >                               sendEvent(parseInt(
> event.currentTarget.id
> > ));
> > >                       }
> > >
> > >                       private function sendEvent(id:int):void
> > >                       {
> > >                               var e:SchedaEvent=new
> > SchedaEvent(SchedaEvent.LOAD_SCHEDA);
> > >                               e.Id=id;
> > >
> > >                               this.owner.dispatchEvent(e);
> > >                       }
> > >               ]]>
> > >       </fx:Script>
> > >
> > >       <s:HGroup width="100%" height="100%" paddingTop="3">
> > >               <s:VGroup height="100%" width="20%" verticalAlign="top"
> > >horizontalAlign="center">
> > >                       <s:Image width="80%" height="80%" id="img"
> > >contentLoader="{s_imageCache}"/>
> > >               </s:VGroup>
> > >               <s:VGroup height="100%" width="70%">
> > >                       <s:Label width="100%" height="20%" id="lezione"/>
> > >                       <s:TileGroup width="100%" height="80%"
> > id="schede"/>
> > >               </s:VGroup>
> > >
> > >       </s:HGroup>
> > >
> > >-----Messaggio originale-----
> > >Da: Ben Smeets [mailto:[email protected]]
> > >Inviato: martedì 3 settembre 2013 15.22
> > >A: [email protected]
> > >Oggetto: Re: Improve spark List performance
> > >
> > >How many rows in the list? (i.c.w. useVirtualLayout)
> > >
> > >The setup you mention shouldn't be a problem I think (unless the image
> > >you talk about is 200MB a pop), but depends on the implementation
> > >(details). E.g., if the buttons are created every scroll, instead of
> > >reused, that might be a cause.
> > >
> > >Any code you can share, can help (me at least) to track down the
> culprit.
> > >
> > >Not a guru here though, so maybe others will know off the top of their
> > >heads :)
> > >
> > >Ben
> > >
> > >P.S. We are talking desktop app here right? Mobile is a different beast
> > >all together (for me).
> > >
> > >
> > >
> > >On 3 sep. 2013, at 15:16, Federico De Maddalena
> > ><[email protected]> wrote:
> > >
> > >> Hi! I'm working on a mobile project.
> > >> I created a spark List, which item renderer is an extension of
> > >> ItemRenderer. Each of my item renderer contains one spark Image, one
> > >> Label and a number of small buttons which varies from 3 to 20.
> > >> Now, scrolling the list is terribly slow. There are ways to improve
> > >> scroll speed? I spent a lot of time but without success.
> > >> Regards
> > >> federico
> > >>
> > >
> >
> >
>
>
> --
> Angelo Lazzari
> mobile: 0039 347 0090 452
> mail: [email protected]
>
>
> ----------------------------
> Verificate la corrispondenza del destinatario; in caso contrario vogliate
> notificare ciò al mittente e, consci della responsabilita'per l'uso
> indebito, cancellare il messaggio e sue copie / Verify the correspondence
> of the addressee; otherwise, notify that to the sender and, conscious of
> the responsibility for the undue use, destroy the message and its copies.
> ----------------------------
>

Reply via email to