Hi
We have a flex3 app, part of which has a dialog box from which the
user can pick a particular "graph"-type component to add to their
display.
Internally, this is generated with an <mx:Tile> list, where the
dynamic list of children is created then addChild()-ed to the tile.
This seems fine - but in certain circumstances seems appallingly slow.
To illustrate - if we have a test doing
<mx:Tile id = "theTile" left="10" right="10" top="10" bottom="10"/>
Then if you do something like the following:
for(var i:int=0;i<50;i++)
{
var j:Button = new Button();
j.width = 100;
j.height = 75;
theTile.addChild(j);
}
Then it executes very very fast - too fast to even notice. But if I
replace a 'button' with an mx.charts.LineChart it slows down to be a
couple of seconds, which is on the boundary of being acceptable. But
if I change it to be a (degrafa-based)
com.brightPoint.controls.DegrafaGauge, it's >5 seconds; not what you
want when a user should be flipping through pages quickly.
I tried replacing the mx:Tile with a new Spark BorderContainer, and
it's no better. It feels slower than flex3 was (but that's just a
vague impression).
I suspect I need to be fiddling with ItemRenderers, but I'm not sure
it's going to really help. Are these just badly implemented
components? Is there something else I can do to mitigate the initial
render slowness (e.g: is it actually burning time trying to lay
something out) ?