Прослушивание события, отправленного с использованием класса EventDispatcher - PullRequest
1 голос
/ 20 декабря 2011

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

У меня есть Arraycollection, которую я создаю и редактирую в основном приложении, затем я хочу отправить его в EventDispatcher и сделать несколько проверок, а затем я хочу отправить свою коллекцию ArrayCollection обратно в основное приложение для привязки к объектам Visual. .

Если вся моя логика кода неверна, пожалуйста, сообщите мне [=

Вот код

Подкласс EventDispatcher

public class LoadData extends EventDispatcher
{
    public var sendData:DataSender = new DataSender('DataLoader',dataList,true);
    private var dataList:ArrayCollection = new ArrayCollection();           
    dispatchEvent(sendData);
}

Пользовательский класс событий

public class DataSender extends Event {
    public var data:ArrayCollection = new ArrayCollection;
    public function DataSender(type:String, data:ArrayCollection, bubbles:Boolean=true, cancelable:Boolean=false)
    {
        super(type, bubbles, cancelable);
        this.data = data;
    }
}

Главное приложение

var DataEvent:LoadData = new LoadData(dataList);
addEventListener('DataLoader',datacapture);


public function datacapture(event:DataSender):void{
    check.dataProvider = event.data;    
}

Ответы [ 2 ]

0 голосов
/ 20 декабря 2011

Да, ваш код испорчен.Прежде всего, я предлагаю вам прочитать об объектно-ориентированном программировании.

Затем взгляните на это:

public class LoadData extends EventDispatcher {

    public var sendData:DataSender;
    private var dataList:ArrayCollection;

    public function LoadData() {
        //This is the CONSTRUCTOR which is run when you do new LoadData()
    }

    //This function is called when you want to dispatch the event
    private function dispatch() {
        dataList = new ArrayCollection();           
        sendData = new DataSender('DataLoader',dataList,true);
        dispatchEvent(sendData);
    }

}

Тогда ваше основное приложение выглядит так:

var dataEvent:LoadData = new LoadData(dataList);
dataEvent.addEventListener('DataLoader', datacapture);

Затем, всякий раз, когда вызывается функция dataEvent.dispatch (), будет вызываться ваш обработчик событий.

0 голосов
/ 20 декабря 2011

Вы должны убедиться, что событие не отправлено, прежде чем вы действительно его прослушаете.Согласно вашему коду, не очень понятно, когда отправляется событие.

Не вдаваясь в детали своей логики, вы, вероятно, могли бы сделать что-то подобное, обратите внимание, что я не рекомендую эту реализацию, простоиллюстрируя мой ответ!

    //In the LoadData Class
    public var sendData:DataSender = new DataSender('DataLoader',dataList,true);
    private var dataList:ArrayCollection = new ArrayCollection();   

    public function dispatch():void
    {
       dispatchEvent(sendData);
    }

    //In your Main App
    var dataEvent:LoadData = new LoadData(dataList);
    dataEvent.addEventListener('DataLoader',datacapture);
    dataEvent.dispatch();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...