проблема с получением настраиваемого события Actionsript3 между flex и flash - PullRequest
0 голосов
/ 15 июля 2011

Я пытаюсь сделать объекты, созданные во флэш-памяти, для отправки событий в мое гибкое приложение.

Вот сценарий:

  1. Я сделал свое собственное событие:

    package classes
    {
            import flash.display.MovieClip;
            import flash.events.Event;
    
          public class DecisionNodeEvent extends Event
     {   
    
    public static const NEW_DECISION_NODE:String = 'new_decision_node';
    public var node:MovieClip;
    
    public function DecisionNodeEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false, node:MovieClip =null)
    {
        super(type, bubbles, cancelable);
        this.node = node;
    
    }
    
    override public function clone():Event
    {
        return new DecisionNodeEvent(type, bubbles, cancelable, node);
    }
    
  2. Затем я отправляю его из своего пользовательского объекта (мувиклипа):

    var event:DecisionNodeEvent = new DecisionNodeEvent(DecisionNodeEvent.NEW_DECISION_NODE);
    dispatchEvent(event);
    
  3. и, наконец, я создаю экземпляр объекта flash во Flex и настраиваю для него слушатель и обработчик.

        nodeZero = new Node(0,null);
        nodeZero.addEventListener(DecisionNodeEvent.NEW_DECISION_NODE, decisionNodeAdded);
    
         .......
    
        private function decisionNodeAdded(event:DecisionNodeEvent):void
        {
    
                trace('the event came to the main Flex app');
        }
    

Я проверил, чтобы убедиться, что события отправляются. Это так, и я вижу следы, появляющиеся на консоли Flex. Кажется, он просто не доходит до обработчика событий. это очень расстраивает :( Кто-нибудь может мне помочь, пожалуйста ??

Ответы [ 3 ]

1 голос
/ 20 июля 2011

Если событие отправляется в конструкторе (код, который запускается при использовании нового ключевого слова), оно уже произошло к тому времени, как вы переходите к следующей строке и добавляете прослушиватель событий.

НТН;

Amy

1 голос
/ 15 июля 2011

Вы не проходите узел, когда отправляете событие (в чем весь смысл пользовательского события, верно?), Я думаю, это должно выглядеть примерно так:

 this.dispatchEvent( new DecisionNodeEvent(DecisionNodeEvent.NEW_DECISION_NODE,false,false,this) );

=)

0 голосов
/ 15 июля 2011

У меня не было проблемы с пропуском узла (я взял пропуск узла для отладки).Проблема заключалась в том, что ни одно событие не было отправлено туда, где находился слушатель, поэтому обработчик не был запущен.спасибо за помощь.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...