【问题标题】:Drawing multiple lines on one chart in flex 4.5在 flex 4.5 的一张图表上绘制多条线
【发布时间】:2012-03-21 16:34:52
【问题描述】:

我在 flex 4.5 中有一个带有 dateTimeAxis 水平轴的candleStickChart。
我希望有一个按钮,可以在该图表顶部画一条线。
我写了一个代码,每次单击按钮时,都会创建一个新的 CartesianDataCanvas。比我通过监听 MOUSE_DOWN、MOUSE_MOVE 和 MOUSE_UP 来绘制线条来绘制非常标准的线条。
在 MOUSE_DOWN 事件中,我创建了新的 CartesianDataCanvas,并按照以下代码所述更新 annotaionArray:(candles 是candleStickChart 的 id)

public function startDrawing(event:MouseEvent):void
{
    canvas = new CartesianDataCanvas;
    annotationArray.addItem(canvas);
    candles.annotationElements = annotationArray.toArray();         
    x1 = this.mouseX;
    y1 = this.mouseY;   
    addEventListener(MouseEvent.MOUSE_MOVE, updateLine);
    addEventListener(MouseEvent.MOUSE_UP, stopDrawing);
}   

在我绘制的第一行中一切正常。
问题是在绘制第二条线时,第一条线消失了。当我调试 annotationArray 时,我可以看到它确实由 2 个 CartesianDataCanvas 对象组成,并且对于某些原因,它只显示最后一个。

有人知道如何解决此问题以一次显示数组中的所有 CartesianDataCanvas 吗? 我对 flex 还很陌生,所以我可能会在这里错过一些基本的东西。也可以随意评论基础知识。

提前致谢 拉维德

【问题讨论】:

    标签: actionscript-3 apache-flex charts flex4.5 candlestick-chart


    【解决方案1】:

    找出问题所在。 我需要创建一个从 cartesianCanvas 派生的新类并覆盖它的“updateDisplayList”函数来重绘该行

    override protected function updateDisplayList( unscaledWidth:Number, unscaledHeight:Number ):void
    {
        super.updateDisplayList( unscaledWidth, unscaledHeight );       
        drawLine();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多