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 组件设置一个事件侦听器,然后从那里停止传播。这将阻止面板上的点击处理程序触发。例子:

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