0

如何在 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/>

谢谢!

4

4 回答 4

1

您的自定义事件必须扩展事件。在构造函数中,您会发现name:stringbubbling:booleancacellable:boolean作为参数。

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

于 2012-08-20T16:28:55.290 回答
0

您可以使用内置在扩展类中的指定自定义元标记数据信息来扩展 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> 
于 2010-01-03T17:01:12.513 回答
0

一种可能的解决方案,但不完全是我正在寻找的解决方案是在 DataGroup 级别添加这行代码。

this.addEventListener(SelectionEvent.SELECTED, onSelect);

这将确保所有由 CustomComponent 触发的事件都被触发。

于 2009-11-30T00:52:44.500 回答
0

捕获 dataGroups 选择事件,然后调度 doSomethingForAll()

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

然后在显示列表中侦听它上面的 doSomethingForAll 的任何事件侦听器都将被调用。

于 2010-08-12T14:23:21.687 回答