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

カスタム イベントは Event を拡張する必要があります。コンストラクターではname:string、 、bubbling:boolean、およびcacellable:booleanが引数として見つかります。

バブリング パラメータを true に設定します。この例では、メタデータ タグは DataGroup タグに含まれている必要があります。

于 2012-08-20T16:28:55.290 に答える
0

dataGroups selectイベントをキャッチしてから、doSomethingForAll()をディスパッチします。

doSomethingForAllイベントのバブリングプロパティがtrueに設定されていることを確認してください。

次に、ディスプレイリストでその上にあるdoSomethingForAllをリッスンしているイベントリスナーが呼び出されます。

于 2010-08-12T14:23:21.687 に答える
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

考えられる解決策の 1 つですが、まさに私が探していたものとは異なり、このコード行を DataGroup レベルで追加することです。

this.addEventListener(SelectionEvent.SELECTED, onSelect);

これにより、CustomComponent によって発生するすべてのイベントが確実に発生します。

于 2009-11-30T00:52:44.500 に答える