我在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
答案 0 :(得分:0)
找出问题所在。 我需要创建一个派生自cartesianCanvas的新类,并覆盖其“updateDisplayList”函数以重新绘制该行
override protected function updateDisplayList( unscaledWidth:Number, unscaledHeight:Number ):void
{
super.updateDisplayList( unscaledWidth, unscaledHeight );
drawLine();
}