我创建了一个自定义事件类和一个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;
}
答案 0 :(得分:0)
您必须确保在实际收听事件之前未调度该事件。根据你的代码,调度事件的时间并不是很清楚。
如果不深入了解你的逻辑细节,你可能会做这样的事情,请注意我不推荐这个实现,只是说明我的答案!
//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();
答案 1 :(得分:0)
是的,你的代码很糟糕。首先,我建议您阅读面向对象编程。
然后看看这个:
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()函数时,都将调用您的事件处理程序。