1

親愛なる Richard Szalay、
バブリングに関するあなたの回答を確認します。バブリングをもっと探求したいと思います。以下の私のサンプルをご覧ください

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:view="com.view.*"  >
 <mx:Script>
  <![CDATA[
   import com.events.ImgLoaded;
   private function loadedd(evt:ImgLoaded):void{
    trace("test") 
    evt.stopImmediatePropagation();
   }
   private function panelClickHandler(evt:Event):void{
    trace("panel");   
   }
  ]]>
 </mx:Script>
 <mx:VBox>  
  <mx:Panel click="panelClickHandler(event)">
   <view:Load imgLoad="loadedd(event)"/>
  </mx:Panel>  
 </mx:VBox> 
</mx:Application>

カスタム イベント クラスで、bubbling=true、cancelable=true を設定します。

前の回答から、バブリングは UI コンポーネントにのみ影響することがわかります。バブル引数が true に設定されていても、カスタム クラスから発生したイベントはバブルしません。

私の質問は、「ロード」(カスタムコンポーネント)のボタンをクリックしたときに panelClickHandler 関数が起動されないようにするにはどうすればよいですか??

バブリングを良い例で説明してください(カスタムイベントクラスでのように)?

4

1 に答える 1

0

私はあなたの第一言語が英語ではないと思います、そしてとにかく私はあなたを完全に理解しているとは思いませんが、あなたが求めているのはビューでクリックを許可する方法です:パネルでクリックハンドラーを起動することからロード。

必要なのは、view:loadコンポーネントをクリックするためのイベントリスナーを設定し、そこからstopPropagationを設定することです。これにより、パネルのクリックハンドラーが起動しなくなります。例:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:view="com.view.*"  >
     <mx:Script>
      <![CDATA[
       import com.events.ImgLoaded;
       private function loadedd(evt:ImgLoaded):void{
        trace("test") 
        evt.stopImmediatePropagation();
       }
       private function panelClickHandler(evt:Event):void{
        trace("panel");   
       }
private function load_clickHandler ( e:MouseEvent ) : void
{
e.stopPropagation;
}
      ]]>
     </mx:Script>
     <mx:VBox>  
      <mx:Panel click="panelClickHandler(event)">
       <view:Load imgLoad="loadedd(event)" click="load_clickHandler(event)"/>
      </mx:Panel>  
     </mx:VBox> 
    </mx:Application>
于 2010-05-24T18:36:43.120 に答える