Вы можете найти решение, покопавшись в источнике ItemRenderer.Поиск "rollout" находит это:
private function addHandlers():void
{
addEventListener(MouseEvent.ROLL_OVER, itemRenderer_rollOverHandler);
addEventListener(MouseEvent.ROLL_OUT, itemRenderer_rollOutHandler);
}
Глядя на метод "itemRenderer_rollOutHandler", он содержит:
protected function itemRenderer_rollOutHandler(event:MouseEvent):void
{
hovered = false;
}
Извлекая член "hovered", вы можете видеть, что онимеет функцию установки:
protected function set hovered(value:Boolean):void
{
if (value != _hovered)
{
_hovered = value;
setCurrentState(getCurrentRendererState(), playTransitions);
if (autoDrawBackground)
{
redrawRequested = true;
super.$invalidateDisplayList();
}
}
}
Часть этого устанавливает текущее состояние.Хорошо, что это защищенный метод, который означает, что мы можем переопределить его.Поэтому, если вы никогда не используете состояние наведения в вашем ItemRenderer, достаточно добавить это в блок скрипта:
override protected function set hovered(value:Boolean):void
{
// do nothing
}
В результате состояние наведения и фоновый рисунок не произойдут, поэтому слушатель события свитка развертыванияне будет иметь никакого эффекта, и ваши состояния не будут затронуты.