2010-01-17 22 views
1

當用戶懸停在圖表數據中提供的點上時,Flex圖表(如AreaChart)具有美妙的內置支持,用於顯示數據「工具提示」。您可以將鼠標懸停在任何條形圖示例on this page上進行演示。可能在Canvas上顯示Flex數據提示而不是Chart對象?

我有,我在可選一些畫點作爲參考點上提供給我的AreaChartCartesianDataCanvas ES通過它的<mx:annotationElements><mx:backgroundElements>標籤圖的情況。我希望擁有與AreaChart一樣的懸停數據提示功能,但適用於這些點。有誰知道如何做到這一點,或者甚至有可能?

我意識到我只是在畫布上繪畫,並且沒有實際的dataProvider支持這些點,但是如果有辦法爲CartesianDataCanvas提供一組數據值或某種效果,那就太好了!

回答

1

看到您的其他文章,我假設您使用cdc.graphics繪製點。在這種情況下,向他們添加懸停文本並不容易。創建一個延伸UIComponent的類,覆蓋updateDisplayList方法並在其中執行繪圖。現在,您可以使用dot.toolTip屬性輕鬆地將鼠標懸停在文本上。

//Dot.as 
package 
{ 
    public class Dot 
    { 
    override protected function updateDisplayList(unscaledWidth:Number, 
     unscaledHeight:Number):void 
    { 
     this.graphics.lineStyle(1); 
     this.graphics.drawCircle(0, 0, 5); 
    } 
} 

//... later: 
var dot:Dot = new Dot(); 
dot.x = xValue; 
dot.y = yValue; 
dot.toolTip = "Hover Text"; 
cdc.addChild(dot); 
+0

Amarghosh,只想說感謝您的勤奮跟進我的兩個問題。非常感謝您的幫助! – Impirator 2010-01-18 02:06:21

+0

我終於有機會嘗試一下了(工作很忙),而且這幾乎是完美的。然而,事實證明,添加到數據畫布(比如'CartesianDataCanvas')更喜歡'canvas.addDataChild(child,[left,top,right,bottom,hCenter,vCenter])''。你介意編輯你的文章來將'cdc.addChild'改成'cdc.addDataChild'嗎?謝謝,Amarghosh! – Impirator 2010-02-10 04:05:07

+0

哦!當重寫此方法時,作爲第一行調用'super.updateDisplayList(unscaledWidth,unscaledHeight);'也是一個好主意(我被告知)。而'公共類Dot'需要*'擴展UIComponent' *。 – Impirator 2010-02-10 04:36:08