2009-09-16 56 views
0

我有一個名爲JDChart的類和一個名爲JDLine的類。在JDChart內部有一個名爲addLine()的方法,它需要JDLine類型的1個參數。這很好。但我希望能夠把這個在這樣的XML:Flex:MXML中的嵌套標記==運行方法....如何設置它?

<JDChart> 
<JDLine/> 
<JDLine/> 
<JDLine/> 
</JDChart> 

併爲每個JDLine嵌套在JDChart在MXML,我想叫上JDChart與各自JDLine的addLine()方法通過。

做我想做什麼,因爲?我不知道如何設置它?我假設我必須在JDChart類的某處使用元標記來告訴編譯器執行此操作?有人知道嗎?

謝謝!

回答

0

我相信當你在MXML中添加東西時,它只會構造它們,然後調用addChild()。

您可以讓JDChart覆蓋addChild(),並檢查添加內容的類型。如果它是一個JDLine,則可以在將它傳遞給super.addChild()之前將它傳遞給addLine()方法。

+0

謝謝,我試過,但我得到的錯誤「已爲此組件指定可視子的多套」了。即使我沒有添加它們,因爲如果類型是JDLine,我從不會調用super.addChild()。 – 2009-09-16 19:38:35

+0

這是一個運行或編譯時錯誤? – Herms 2009-09-16 20:29:17

+0

這是一個運行時錯誤,我查了一下,原因是因爲JDChart是一個自定義組件,它已經有了子組件,並且您不能將子組件添加到已有子組件的子組件中。然而,JDLine實際上更像是一個dataProvider,(它告訴它從數據提供者的哪個信息來繪製),它實際上並沒有被添加到顯示列表中。但是您需要添加倍數,每個倍數代表要在圖表上繪製的線條。 – 2009-09-17 14:40:59

0

如果JDLine對象將僅由JDChart對象派生,請使用它。

在JDLine類的added事件處理程序,添加以下代碼:

public function onAdded(e:Event):void 
{ 
    var chart:JDChart = this.parent as JDChart; 
    if(!chart) 
    throw new Error("Parent is not JDChart"); 
    chart.addLine(this); 
}