У меня хорошие и плохие новости.Хорошей новостью является то, что это действительно легко.Плохая новость заключается в том, что вам нужно создать подкласс дерева.
package custom
{
import mx.controls.Tree;
import mx.controls.listClasses.IListItemRenderer;
public class CustomTree extends Tree
{
protected override function drawItem(item:IListItemRenderer,
selected:Boolean = false,
highlighted:Boolean = false,
caret:Boolean = false,
transition:Boolean = false):void
{
super.drawItem(item, false, false, false, transition);
}
}
}
Таким образом, здесь происходит то, что мы перехватываем метод drawItem и вызываем метод в суперклассе, заставляя его думать, что ничего не выбрано, не выделено или не "выделено".Каретка предназначена для того, чтобы изменить выбор с клавиатуры.Не уверен, для чего нужен параметр перехода, вы можете отправить его как всегда ложное, если вам все еще мешают какие-то эффекты.
Редактировать
После просмотраВ связи с этим я обнаружил, что корень проблемы - средство визуализации элементов, использующее новую архитектуру искры, что означает, что средства визуализации отвечают за реагирование на особые состояния (выбранный, выделенный, показать каретку).Таким образом, при использовании средства визуализации искрового элемента есть еще 3 функции, которые также необходимо переопределить:
public class CustomTree extends Tree
{
public override function isItemShowingCaret(data:Object):Boolean
{
return false;
}
public override function isItemHighlighted(data:Object):Boolean
{
return false;
}
public override function isItemSelected(data:Object):Boolean
{
return false;
}
protected override function drawItem(item:IListItemRenderer,
selected:Boolean = false,
highlighted:Boolean = false,
caret:Boolean = false,
transition:Boolean = false):void
{
super.drawItem(item, false, false, false, transition);
}
}
Bonus - переопределить isItemSelectable, чтобы предотвратить выбор при нажатии на элемент (вы все равно можете выбрать их с помощью клавиатуры, хотя прине намекайте на это):
public override function isItemSelectable(data:Object):Boolean
{
return false;
}