我有一个简单的对象,可以从Google Maps API获取地理编码数据,我希望它可以根据Google的响应发送一组自定义事件.但是,我没有在此类上使用addEventListener()和dispatchEvent()方法,因为它不会扩展UIComponent.有没有办法在Flex 3中创建自定义事件而不继承UIComponent?
绝对没错.要利用事件处理,您的自定义对象应扩展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()); }
合理?