flex自定义事件冒泡

时间:2010-05-24 01:38:14

标签: flex events event-bubbling

亲爱的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组件;即使bubbles参数设置为true,从自定义类触发的事件也不会冒泡。

我的问题是当我点击“加载”(自定义组件)中的按钮时,如何阻止panelClickHandler函数被触发?

请用好的例子解释冒泡(比如有自定义事件类)?

1 个答案:

答案 0 :(得分:0)

我认为您的第一语言不是英语,无论如何我不确定我是否完全理解您,但我认为您要求的是如何允许在视图中单击:从触发点击处理程序加载在小组讨论。

您需要的是为视图点击设置一个事件监听器:load component,并从那里开始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>