2009-11-30 81 views
0

如何在Flex 4中創建鼓泡自定義事件?Flex 4鼓泡自定義事件

創建和暴露在MXML自定義事件,您需要在將與該行分派事件的組件聲明它:

<fx:Metadata> 
     [Event(name="select", type="my.engine.events.SelectionEvent")] 
</fx:Metadata> 

這使您可以:

<my:CustomComponent select="doSomething()"/> 

但是,你如何使這個泡沫向上。我想這樣做

<s:DataGroup select="doSomethingForAll();"> 
    <s:itemRenderer> 
     <fx:Component> 
     <my:CustomComponent/> 
     </fx:Component> 
    </s:itemRenderer> 
</s:DataGroup/> 

謝謝!

回答

0

一個可能的解決方案,但不是我正在尋找的是在DataGroup級別添加這行代碼。

this.addEventListener(SelectionEvent.SELECTED, onSelect); 

這將確保CustomComponent觸發的所有事件都是安全的。

0

您可以擴展S:DATAGROUP容器內置到擴展的類指定的自定義元標記的數據信息,或者您可以撥打「doSomethingForAll()」從itemRenderer的「選擇」事件處理方法,請參見下面的代碼:

<s:DataGroup   
    dataProvider="{instructions}"   
    width="100%">   
    <s:itemRenderer> 
     <fx:Component> 
      <my:CustomComponent      
       select="rendererSelect()"> 
       <fx:Script> 
        <![CDATA[ 

         protected function rendererSelect():void 
         { 
          outerDocument.doSomethingForAll(); 
         } 

        ]]> 
       </fx:Script> 
      </my:CustomComponent> 
     </fx:Component> 
    </s:itemRenderer>     
</s:DataGroup> 
0

趕上dataGroups選擇事件,然後派遣doSomethingForAll()

確保doSomethingForAll事件有它的冒泡屬性設置爲true。

然後在顯示列表中偵聽其上的doSomethingForAll的任何事件偵聽器都會被調用。

1

您的自定義事件必須擴展事件。在構造函數中,您會發現name:stringbubbling:booleancacellable:boolean作爲參數。

將冒泡參數設置爲true。在您的示例中,元數據標記必須位於您的DataGroup標記中。

相關問題