在flex 4.5中的一个图表上绘制多条线

时间:2012-03-03 11:27:44

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

我在flex 4.5中有一个candleStickChart,其中包含dateTimeAxis水平轴 我希望有一个按钮,可以在该图表的顶部绘制一条线 我编写了一个代码,每次单击该按钮时,都会创建一个新的CartesianDataCanvas。通过监听MOUSE_DOWN,MOUSE_MOVE和MOUSE_UP绘制直线,我做了一个非常标准的线条图。
在MOUSE_DOWN事件中,我创建了新的CartesianDataCanvas,并按照以下代码中的描述更新annotaionArray :( candle是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对象组成,而对于somereasoen,它显示的是最后一个。

有人知道如何解决这个问题,一次显示阵列中的所有CartesianDataCanvas? 我是相当新的flex,所以我可能会错过一些基本的东西。也可以随意评论基础知识。

提前致谢 Ravid

1 个答案:

答案 0 :(得分:0)

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

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