гибкий пользовательский всплеск событий - PullRequest
1 голос
/ 24 мая 2010

Дорогой Ричард Сзалай,
Я перебираю ваши ответы относительно пузырей, я хочу больше исследовать пузыри. Пожалуйста, смотрите мой образец ниже

<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, cancellable = true

Из предыдущего ответа я могу понять, что пузыри влияют только на компоненты пользовательского интерфейса; события, генерируемые из пользовательских классов, не будут пузыриться, даже если для аргумента bubbles установлено значение true.

Мой вопрос: как я могу предотвратить срабатывание функции panelClickHandler при нажатии кнопки в «Загрузить» (пользовательский компонент) ??

объясните, пожалуйста, пузырьки на хорошем примере (например, для пользовательских классов событий)?

1 Ответ

0 голосов
/ 24 мая 2010

Я предполагаю, что ваш родной язык не английский, и, во всяком случае, я не уверен, что полностью вас понимаю, но я думаю, что вы спрашиваете, как разрешить клик в представлении: загрузить из запуска обработчик кликов на панели.

Вам нужно настроить прослушиватель событий для щелчка по представлению: загрузить компонент и оттуда остановить 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>
...