2009-11-30 84 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标记中。

相关问题