2012-03-03 65 views
0

我有一個flexStickChart,flex4.5中有一個dateTimeAxis橫軸。
我希望有一個按鈕,可以在該圖表上繪製一條線。
我寫了一個代碼,每次單擊按鈕時,都會創建一個新的CartesianDataCanvas。比通過監聽MOUSE_DOWN,MOUSE_MOVE和MOUSE_UP繪製線條來製作漂亮的標準線條圖。
在MOUSE_DOWN事件中,我創建了新的CartesianDataCanvas,並更新如下面的代碼描述的annotaionArray:(蠟燭是K線的ID)在flex中繪製多個圖表中的多條線4.5

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

想通了這個問題。 我需要創建一個從cartesianCanvas派生的新類並覆蓋它的「updateDisplayList」函數以重新繪製線

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