Events Flex4冒泡自定义事件

Events Flex4冒泡自定义事件,events,event-handling,mxml,flex4,event-bubbling,Events,Event Handling,Mxml,Flex4,Event Bubbling,如何在Flex4中创建冒泡自定义事件 要在MXML中创建和公开自定义事件,您需要在将使用此行发送事件的组件处声明它: <fx:Metadata> [Event(name="select", type="my.engine.events.SelectionEvent")] </fx:Metadata> [事件(name=“select”,type=“my.engine.events.SelectionEvent”)] 这允许您: <my:Cust

如何在Flex4中创建冒泡自定义事件

要在MXML中创建和公开自定义事件,您需要在将使用此行发送事件的组件处声明它:

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

[事件(name=“select”,type=“my.engine.events.SelectionEvent”)]
这允许您:

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

然而,你如何使这个泡沫向上。我想这样做

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


谢谢

一个可能的解决方案,但不完全是我想要的,就是在数据组级别添加这行代码

this.addEventListener(SelectionEvent.SELECTED, onSelect);

这将确保CustomComponent触发的所有事件都不会发生。

您可以使用内置在扩展类中的指定自定义元标记数据信息扩展s:DataGroup容器,也可以从itemRenderer的“select”事件处理程序调用“doSomethingForAll()”方法,请参见下面的代码:

<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> 

捕获数据组选择事件,然后发送doSomethingForAll()

确保doSomethingForAll事件的冒泡属性设置为true


然后,在显示列表中侦听其上方doSomething的任何事件侦听器都将被调用。

您的自定义事件必须扩展事件。在构造函数中,可以找到
name:string
冒泡:boolean
,以及
cacellable:boolean
作为参数

将冒泡参数设置为true。在您的示例中,元数据标记必须位于数据组标记中