我有一个简单的对象,它从 Google Maps API 获取地理编码数据,我希望它根据 Google 的响应调度一组自定义事件。但是,我没有这个类的 addEventListener() 和 dispatchEvent() 方法,因为它没有扩展 UIComponent。有没有办法在 Flex 3 中创建自定义事件而不从 UIComponent 继承?
JC Grubbs
问问题
2021 次
4 回答
8
绝对没错。要利用事件处理,您的自定义对象应该扩展 EventDispatcher:
public class MyClass extends EventDispatcher
{
// ...
public function myFunction():void
{
dispatchEvent(new Event("myEvent"));
}
}
这负责调度事件。
然后,如果您有需要,您还可以创建一个扩展 Event 的单独类,它为您提供了附加事件特定数据以在处理程序中使用的选项(除其他外):
public class MyClass extends EventDispatcher
{
// ...
public function myFunction():void
{
dispatchEvent(new MyEvent(someData));
}
}
public class MyEvent extends Event
{
private var _myEventData:Object;
public function MyEvent(eventData:Object)
{
_myEventData = eventData;
}
}
..所以在你的处理程序中,你只需:
private function myHandler(event:MyEvent):void
{
trace(event.myEventData.toString());
}
有道理?
于 2009-01-14T21:46:08.047 回答
2
扩展 EventDispatcher 类,或实现 flash.events 包中的 IEventDispatcher 接口。
于 2009-01-14T21:33:14.593 回答
1
是的,这应该是可能的。像这样扩展 EventDispatcher:
import flash.events.*;
public class MyDispatcher extends EventDispatcher {
private function doIt(event:Event):void {
dispatchEvent(new Event("myEvent"));
}
于 2009-01-14T21:41:31.330 回答
0
这正是我所做的!扩展的 EventDispatcher 和继承的 dispatchEvent
谢谢小伙子们
于 2010-10-22T13:25:12.023 回答