Элементы Flex ComboBox не выровнены - PullRequest
0 голосов
/ 30 марта 2010

У меня есть выпадающий список, в котором для отображения изображения используется пользовательский элементенденер. при прокрутке вверх и вниз по списку изображения случайным образом выходят из выравнивания. Как мне это остановить?

public class PinRenderer extends UIComponent implements IDataRenderer, IListItemRenderer
{

    private var currentPin:DisplayObject;

    private var _data:Object;
    public function get data():Object
    {
        return _data;
    }

    public function set data( value:Object ):void
    {
        _data = value;
        invalidateDisplayList();
    }

    override protected function measure():void
    {
        super.measure();
        measuredHeight = measuredMinHeight = 19;
        measuredWidth = measuredMinWidth = 19;
    }

    private var pins:Dictionary = new Dictionary();

    override protected function updateDisplayList( unscaledWidth:Number, unscaledHeight:Number ):void
    {
        super.updateDisplayList( unscaledWidth, unscaledHeight );
        var note:PerformanceNote;

        if ( data != null && ( data is PerformanceNote || data is Number ) )
        {
            var color:uint;
            if ( data is PerformanceNote )
            {
                color = PerformanceNote( data ).note_pin_color; 
            }
            else if ( data is Number )
            {
                color = Number( data );
            }

            var pinClass:Class = Constants.PIN_IMAGES[ color ];
            var pin:DisplayObject = pins[ pinClass ];
            if ( !pin )
            {
                pin = new pinClass();
                pin.x = ( unscaledWidth - pin.width )   / 2;
                pin.y = ( unscaledHeight - pin.height ) / 2;
                pins[ pinClass ] = pin;
            }
            if ( currentPin )
            {
                removeChild( currentPin );
            }

            addChild( pin );
            currentPin = pin;
        }
    }

}

1 Ответ

0 голосов
/ 01 апреля 2010

вместо выполнения большей части логики в updateDisplayList я переместил его в commitProperties, но оставил настройки pin.x и pin.y в updateDisplayList. Это устранило проблему, с которой я столкнулся.

...