Вы используете ретранслятор; который, по сути, петля.
Звучит так, будто вы просите перебирать предметы, но обрабатывать их в другом порядке. Это верно?
Моей первой рекомендацией было бы найти способы сортировки элементов dataProvider по глубине, прежде чем ретранслятор «запустится».
Моя вторая рекомендация - не использовать ретранслятор. Класс на основе списка даст вам лучшую производительность благодаря переработке рендерера.
Если вам действительно нужно создать все дочерние элементы одновременно, моя третья рекомендация - перейти к реализации ActionScript, которая даст вам гораздо более детальный контроль над тем, как и когда создаются вещи.
Каждый раз, когда я использовал ретранслятор, я был недоволен.
Вот некоторая информация о списках и itemRenderers с Flex 4.
Это приблизительная оценка того, как я мог бы изменить этот образец, чтобы использовать список вместо повторителя:
<!-- START >>> middle part: items -->
<mx:Canvas id="itemContainer"
width="100%"
height="100%">
<!-- START >>> Items Display on the page -->
<s:List id="richTextList"
dataProvider="{_model.current_day.richTextNotes}"
itemRenderer="com.something.myComponent">
</s:List>
</mx:Canvas>
ItemRenderer может выглядеть примерно так:
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark">
<s:SkinnableContainer rotation="{data.rotation}"
creationComplete="skinnablecontainer1_creationCompleteHandler(event)" />
</s:ItemRenderer>
Список будет определять ширину, x и y позиции рендерера. В большинстве случаев это также будет определять высоту; хотя список Flex 3 имеет параметр variableRowHeight .
Если вы хотите использовать другой рендерер на основе ond ata, посмотрите на использование itemRendererFunction