Alternativa para el problema que existe en Flex con el árbol y el scroll cuando este tiene la propiedad
"variableRowHeight = true"
De manera simple y rápida la idea consiste en colocar al árbol, dentro de un VBox. Con esto vamos a conseguir que el scroll lo haga el VBox (no bugueado) en lugar del árbol.
A continuación el código, considerar de que se está usando un skin/componente:
override protected function partAdded(partName:String, instance:Object):void{
if(instance==arbolInstrumentoPlan){
arbolInstrumentoPlan.addEventListener(TreeEvent.ITEM_OPEN,calcularAlturaDelArbol);
arbolInstrumentoPlan.addEventListener(TreeEvent.ITEM_CLOSE,calcularAlturaDelArbol);
}
}
//al abrir o cerrar un nodo, se re-calcula el alto del árbol
//para así ajustar el tamaño del scroll.
private function calcularAlturaDelArbol(evt:TreeEvent):void {
arbolInstrumentoPlan.height = arbolInstrumentoPlan.measureHeightOfItems();
arbolInstrumentoPlan.invalidateList();
}
Importante acá es colocarle al árbol la propiedad
"verticalScrollPolicy = off", ya que será el VBox quien nos realizará este trabajo: