开发者

flex custom events bubbling

Dear Richard Szalay,

i go through your answers regarding bubbling, i want explore bubbling more. Please see my sample below

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

In my custom event class i set bubbling=true, cancelable=true

I can understand from previous answer that bubbling only affects UI components; events fired from custom classes will not bubble, even if the bubbles argument is set to true.

My question is how can i prevent panelClickHandler function got fired when i click button in the "Load" (custom component)??

please explain bubbling with good example ( like to have with custom event c开发者_开发技巧lasses)?


I assume your first language isn't english and at any rate I am not sure I fully understand you, but what I think you are asking for is how to allow for a click in the view:load from firing the click handler on the panel.

What you need is to set up an event listener for a click on the view:load component, and stopPropagation from there. That will prevent the click handler on the panel from firing. Example:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜