0

我在 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 还很陌生,所以我可能会在这里错过一些基本的东西。也可以随意评论基础知识。

提前感谢拉维德

4

1 回答 1

0

想通了问题。我需要创建一个从 cartesianCanvas 派生的新类并覆盖其“updateDisplayList”函数以重新绘制该行

override protected function updateDisplayList( unscaledWidth:Number, unscaledHeight:Number ):void
{
    super.updateDisplayList( unscaledWidth, unscaledHeight );       
    drawLine();
}
于 2012-03-10T15:42:29.503 回答