Hi after24,

I've tried doing the scrolling optimization by using BitmapData.copyPixels() as 
you described, and I have also tried cacheAsBitmap, the result is, the 
performance between both are the same!
So there is no need to modify Scroller.as anymore, the cacheAsBitmap can easily 
do the same thing.


Here is the sample code for how to use cacheAsBitmap to improve the scrolling 
performance:
<s:Scroller width="100%" height="100%">
    <s:Group>
        <s:DataGroup id="realContent" 
touchInteractionStart="realContent.mouseChildren=false;realContent.cacheAsBitmap=true;"
 
touchInteractionEnd="realContent.mouseChildren=true;realContent.cacheAsBitmap=false;"
 itemRenderer="com.test.renderers.MyItemRenderer" dataProvider="{someData}" 
width="100%">
            <s:layout>
                <s:VerticalLayout useVirtualLayout="false"/>
            </s:layout>
        </s:DataGroup>
    </s:Group>
</s:Scroller>
The essential elements are:
1. You have to put a Group inside the Scroller, then put the real content 
(<s:DataGroup id="realContent">) inside that Group.
2. The layout of the realContent, you have to set its useVirtualLayout to false 
(the default value is false).
3. Listen for the realContent's touchInteractionStart and touchInteractionEnd 
event:
When touchInteractionStart, disable any mouse and touch interactions of the 
realContent's mouseChildren by setting realContent.mouseChildren = false, then 
turn on the cache for realContent by setting realContent.cacheAsBitmap = true.
When touchInteractionEnd, reverse the changes you made for the realContent.
That's it! It's very easy to improve the scrolling performance by doing so. 
It's the same scrolling performance result when compared to the 
BitmapData.copyPixels() approach, yet cacheAsBitmap is much easier to 
understand and handle, so we don't have to do the modify the Scroller.as any 
more, the cacheAsBitmap approach is the best way to improve the scrolling 
performance now!
If you not believe me, test it yourself : )


DarkStone
2014-11-30



At 2014-10-29 18:56:09, "after24" <vinc...@after24.net> wrote:
>Hi Jude,
>
>/*have you tried setting include in layout to false when setting visible to
>false?*/
>
>Yes, this property is set to false during scroll operations.
>
>It seems that this performance decrease is caused by scout... when scout is
>off, there is no difference between the two approaches (visible = false or
>removeElement).
>
>So it looks like this optimization is viable :-)
>
>I am a bit busy this week but I will add a ticket on the JIRA with a sample
>application as soon as possible.
>
>Thank you. 
>
>
>
>--
>View this message in context: 
>http://apache-flex-development.2333347.n4.nabble.com/Scroller-optimization-tp41774p41910.html
>Sent from the Apache Flex Development mailing list archive at Nabble.com.

Reply via email to