将属性附加到Flex/AS3中的事件

jef*_*150 1 apache-flex events actionscript-3 event-dispatching custom-events

我有一个需要与事件一起传递的参数.在尝试通过扩展类将它放在类型上失败之后,我在另一个SO问题中被建议写一个自定义事件.

我之前尝试过这个但是我无法弄清楚如何发送它,因为我只想Event.COMPLETE在FileReference上发送带有普通事件的另一个参数.我不能Event.COMPLETE解雇然后发送我的事件,因为那时我将在同一条船上...所需的参数不会在初始Event.COMPLETE对象中,所以我将无法调度传递该参数的新事件实际执行工作的代码.

非常感谢所有帮助,非常需要它.谢谢.

基本上,我需要Event.COMPLETE完全按照原样替换功能,我只需要一个能够保存我额外属性的事件.请告诉我有一些方法可以做到这一点.

gre*_*reg 9

首先你需要正常添加一个事件监听器,Event.COMPLETE因为它将自动调度,你无能为力.在该事件处理程序中,您可以调度自己的自定义,即使应用程序的其余部分也使用附加到其上的自定义属性进行侦听.下面是一个简单的例子:

您的事件处理代码如下所示:

yourObject.addEventListener(Event.COMPLETE, function(event:Event):void{

  var myEvt:MyEvent = new MyEvent(MyEvent.COMPLETE, myCustomProperty);
  dispatchEvent( myEvt );

})
Run Code Online (Sandbox Code Playgroud)

这个MyEvent班看起来像:

package
{

  import flash.events.Event;

  public class MyEvent extends Event
  {

    public static const COMPLETE:String = "MyEventComplete";

    var myCustomProperty:*;

    public function MyCustomEvent(type:String, prop:*) :void
    {

      myCustomProperty = prop;

      super(type);
      // if you want your event to bubble 
      // be sure to specify : super(type, true)
    }

   //override clone() so your event bubbles correctly
   public override function clone() :MyEvent {

     return new MyEvent(this.type, this.myCustomProperty)

   }
  }
}
Run Code Online (Sandbox Code Playgroud)

您现在可以像任何其他事件一样为自定义事件添加事件侦听器:

addEventListener(MyCustomEvent.COMPLETE, someFunction);
Run Code Online (Sandbox Code Playgroud)