Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 您能在Flex3中的非UIComponent对象上创建自定义事件吗?_Actionscript 3_Apache Flex_Flex3 - Fatal编程技术网

Actionscript 3 您能在Flex3中的非UIComponent对象上创建自定义事件吗?

Actionscript 3 您能在Flex3中的非UIComponent对象上创建自定义事件吗?,actionscript-3,apache-flex,flex3,Actionscript 3,Apache Flex,Flex3,我有一个简单的对象,它从Google Maps API获取用户的地理编码数据,我希望它根据Google的响应发送一组自定义事件。但是,我没有这个类上的addEventListener()和dispatchEvent()方法,因为它不扩展UIComponent。有没有办法在Flex 3中创建自定义事件而不从UIComponent继承?扩展EventDispatcher类,或者从flash.events包实现IEventDispatcher接口。是的,这应该是可能的。像这样扩展EventDispat

我有一个简单的对象,它从Google Maps API获取用户的地理编码数据,我希望它根据Google的响应发送一组自定义事件。但是,我没有这个类上的addEventListener()和dispatchEvent()方法,因为它不扩展UIComponent。有没有办法在Flex 3中创建自定义事件而不从UIComponent继承?

扩展EventDispatcher类,或者从flash.events包实现IEventDispatcher接口。

是的,这应该是可能的。像这样扩展EventDispatcher:

  import flash.events.*;  
  public class MyDispatcher extends EventDispatcher { 
    private function doIt(event:Event):void {  
      dispatchEvent(new Event("myEvent"));  
  }  

绝对是的。要利用事件处理,您的自定义对象应扩展EventDispatcher:

public class MyClass extends EventDispatcher
{
    // ...

    public function myFunction():void
    {
        dispatchEvent(new Event("myEvent"));
    }
}
这负责调度事件

此外,如果需要,还可以创建一个扩展事件的单独类,该类提供附加事件特定数据以在处理程序中使用的选项(以及其他选项):

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());
}

有意义吗?

我就是这么做的!扩展的EventDispatcher和继承的dispatchEvent

谢谢,小伙子们