簡體   English   中英

我可以將多個ItemRenderer與一個LineSeries一起使用嗎?

[英]Can I use multiple ItemRenderer with one LineSeries?

目前,我已經創建了下面的類,該類擴展了ItemRenderer以為折線圖中的所有數據點添加標簽。

package lib

{
    public class LineChartLabelRenderer extends UIComponent implements IDataRenderer, IFactory

    {

        private var _label:Label;

        public var solidColor:SolidColor;

        public function newInstance():*
        {
            return new LineChartLabelRenderer();
        }
        public function LineChartLabelRenderer():void

        {
            super();
            _label = new Label();
            addChild(_label);
            _label.setStyle("color",0x000000);
            _label.setStyle("fontSize",9);
        }

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

        public function set data(value:Object):void

        {
            if (_chartItem == value){
                return;
            }
            _chartItem = ChartItem(value);
            if(_chartItem != null){
                _label.text = LineSeriesItem(_chartItem).yValue.toString();
            }

        }

        override protected function updateDisplayList(unscaledWidth:Number,unscaledHeight:Number):void

        {

            super.updateDisplayList(unscaledWidth, unscaledHeight);
            var ls:LineSeries = _chartItem.element as LineSeries;
            solidColor = new SolidColor(ls.getStyle("fill"));
            _label.setActualSize(_label.getExplicitOrMeasuredWidth(),20);
            _label.move(unscaledWidth - _label.getExplicitOrMeasuredWidth() / 2 , this.unscaledHeight - _label.getExplicitOrMeasuredHeight() - 5);

        }
    }

}

它運作良好。 但是,由於LineSeries可能已經與其他ItemRenderer(例如CircleItemRendererBoxItemRenderer一起設置了。 我找不到在哪里可以用一個LineSeries設置多個ItemRender。 我想知道什么是最好的方法。

感謝SunilD。

最后,我創建擴展的ItemRenderer如下所示

public class LSLabelCircleItemRenderer extends CircleItemRenderer
    {
        private var _label:Label;
        public function LSLabelCircleItemRenderer():void
        {
            super();
            _label = new Label();
        }
        override protected function updateDisplayList(unscaledWidth:Number,unscaledHeight:Number):void
        {
            super.updateDisplayList(unscaledWidth, unscaledHeight);
            if(data != null){
                var ls:LineSeries = ChartItem(data).element as LineSeries;
                label.text = LineSeriesItem(data).yValue.toString();
                skin.parent.addChild(label);
                label.setStyle("color",ls.getStyle("fill"));
                label.move(skin.x - label.getExplicitOrMeasuredWidth() / 5,skin.y - label.getExplicitOrMeasuredHeight());
            }
        }       
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM