0

我正在使用 Flex 4.5。在我的应用程序中,我有一个带有基本 CandlestickSeries 的 CandlestickChart。我让用户能够通过向 CandleStickChart 添加 LineSeries 来在蜡烛图顶部添加折线图,如 adobe 的文档中所述:here

我的问题是,当添加线条时,蜡烛的形状会变窄。此外,添加的每一行都使蜡烛变窄。

我环顾四周,在 adobe 的论坛中找到了这个主题:“LineSeries 的 CandlestickChart 问题”,它描述了完全相同的问题。

不幸的是,该线程仍未得到答复。

有谁知道这个问题的解决方案?

提前致谢, 拉维德

4

2 回答 2

0

我知道这个答案有点晚了,但如果它对其他人有帮助,这就是我所做的。(它也没有经过彻底的测试)

创建一个扩展 CandleStickChart 类的类,并简单地覆盖“applySeriesSet”函数,如下所示:

override protected function applySeriesSet(seriesSet:Array /* of Series */,
                                               transform:DataTransform):Array /* of Series */
    {
        // filter out the non-candlestick series
        var filteredSeriesSet:Array = new Array();
        for each(var series:Series in seriesSet){
            if(series is CandlestickSeries) filteredSeriesSet.push(series);
        }

        // call the CandlestickChart applySeriesSet function with the filtered set, ignore return value
        super.applySeriesSet(filteredSeriesSet, transform);

        // do the code that the CartesianChart applySeriesSet function would have done, but with the unfiltered seriesSet 
        // would have preferred to do something like super.super.applySeriesSet(seriesSet, transform);
        var n:int = seriesSet.length;
        for (var i:int = 0; i < n; i++)
        {
            var newSeries:IChartElement = seriesSet[i];
            if (newSeries is Series)
                customizeSeries(Series(seriesSet[i]), i);
        }
        return seriesSet;
    }
于 2013-04-01T23:34:32.713 回答
0

好吧,我发现的解决方案不是很好,更好的解决方案仍然值得赞赏,但对于那些有同样问题的人来说,这个解决方案对我有用:

出现问题是因为蜡烛的默认项目渲染器使用项目的宽度来计算蜡烛的大小,这是有意义的。问题在于,当您添加另一个系列时,会出现错误,并且在更改蜡烛之前更改了项目的宽度。

我的解决方案是创建默认项目渲染器的副本,并根据图表的宽度和您希望放置的蜡烛数量绘制蜡烛(因此您不使用项目的宽度)。

它解决了这个问题,但如果你使用工具提示功能,它会弄乱它相对于蜡烛的位置。

于 2012-09-20T12:38:43.037 回答