2009-09-04 4 views
1

Я новичок в Flex.My вопрос, как отправить событие между компонентами? Насколько мне известно, Flex только создает пузырьки для себя или своего родителя.Как отправить событие между компонентами Flex?

Я нахожусь в такой ситуации:

<mx:Application> 
     <com:Component1 id="comp1" /> 
     <com:Component2 id="comp2" /> 
    </mx:Application> 

В Component2.mxml У меня есть два других компонента называется А и В

Я хочу comp1, чтобы направить событие с параметрами, в соответствии с параметры могут быть внесены в A и B в comp2.Как можно получить событие в comp2? Я знаю, что Cairngorm может изменить ситуацию, но я не хочу использовать его прямо сейчас. Может ли кто-нибудь дать мне руку? Благодаря!

Беста, Шо

ответ

0
<mx:Application> 
     <com:Component1 id="comp1" click="comp2.handleComp1Click()"/> 
     <com:Component2 id="comp2" click="comp1.handleComp2Click()"/> 
    </mx:Application> 

Это очень сырой, но это, как вы можете это сделать. Для более сложных случаев напишите функцию (или функции) на уровне приложения, чтобы обработать события, а затем распространить то, что вам нужно, на детей. В вашем примере вам нужно что-то сделать на уровне приложения.

Да, правильная архитектура, вероятно, лучше.

+0

Спасибо, Гленн. Ваше решение выполнимо. Компонент отправляет событие, выдает его на уровень аппликации, на котором я слушаю событие, и указывает его обработчик на handleComp1Handler Comp2. – Shuo

3

Если Application запускает событие барботирования он будет доставлен по всей иерархии, comp1 и comp2, а также их детям. Comp1 должны нести метаданные:

[Event(name="someEvent", type="flash.events.Event")] 

Теперь, когда comp1 отправляет событие, оно будет обрабатываться в родительском как:

<com:Component1 id="comp1" someEvent="this.dispatchEvent(event,true)"/> 

как реле.

Я считаю, что лучше справиться с этим с правильной структурой MVC, таких как Robotlegs, мате, мошенничество, PureMVC и т.д.

+0

+1 для Swiz. :) –

+0

Спасибо, Джоэл! Ты дал мне хороший намек. – Shuo

Смежные вопросы