Actionscript 发送带有信息的自定义事件

Posted

技术标签:

【中文标题】Actionscript 发送带有信息的自定义事件【英文标题】:Actionscript dispatch custom event with information 【发布时间】:2013-12-20 09:27:41 【问题描述】:

在actionscript中,我们可以用这个来调度事件:

dispatchEvent(new Event("MyEvent"));

然后通过这个监听事件:

stage.addEventListener("MyEvent", MyFunc);

但是我怎样才能通过事件传递附加信息,以便我可以在MyFunc 函数中访问它?

谢谢。

【问题讨论】:

【参考方案1】:

您可以使用 Subash Selvaraj 提供的示例,这是一个很好的示例。 我唯一的观点是:在我看来,每次要调度此事件时最好避免创建一个单独的变量(用于事件实例)。您可以改为向类构造函数添加其他参数。 因此,您的新事件类可能如下所示:

import flash.events.Event;

public class MyEvent extends Event

    public var objEventData:Object;

    public function MyEvent(type:String, event_data:Object=null, bubbles:Boolean=false, cancelable:Boolean=false)
    
         super(type, bubbles, cancelable);
         objEventData = event_data;
    

    public override function clone():Event 
    
        return new MyEvent(type, objEventData, bubbles, cancelable);
     


在这种情况下,您可以像这样调度您的事件:

dispatchEvent(new MyEvent(EVENT_TYPE, YOUR_DATA) );

之后,您可以从事件处理程序访问传递的数据,即 MyFunc:

private function MyFunc(event:MyEvent):void

    var buff:Object = event.objEventData;

您可以将 Object 类替换为您需要的任何类型。

【讨论】:

【参考方案2】:
  package 
        import flash.events.Event;    

        public class MyEvent extends Event 
            public static const TEST:String = "TEST";
            public myValue:Object = new Object();
            public function MyEvent (type:String, bubbles:Boolean=true, cancelable:Boolean=false) 
                // constructor code
                super(type, bubbles, cancelable);
            
            public override function clone():Event
            
                return new MyEvent(type, bubbles,cancelable);
            

        

    

在你的主文件中这样使用,

private var eventInstance:MyEvent;
eventInstance= new MyEvent(MyEvent.TEST);
eventInstance.myValue = yourObject;
dispatchEvent(eventInstance);

希望对你有帮助。

【讨论】:

【参考方案3】:

您必须创建一个自定义事件,并为其添加自定义属性。这是一个例子。

    public class CustomEvent extends Event
    
         public function CustomEvent (type:String, 
                                      bubbles:Boolean=true,          
                                      cancelable:Boolean=false)
         
              super(type, bubbles, cancelable);
         

         public var dataYouWantToPass:OfSomeClass;
     

bubbles=true 取决于您是否希望它在显示列表中冒泡。

【讨论】:

感谢您的回答。但是气泡和可取消是什么意思?如何取消活动? @user1995781 通过调用 event.preventDefault();

以上是关于Actionscript 发送带有信息的自定义事件的主要内容,如果未能解决你的问题,请参考以下文章

带有 Onclick 的自定义按钮,隐藏 Onclick 事件

带有 Express 框架的 Node.js 中的自定义事件

如何告诉带有 UITextField 的自定义 UIView 接收触摸事件

Firebase Analytics for iOS — 带有预定义事件的自定义参数 (Swift)

如何在 Swagger UI 中发送带有请求的自定义标头?

如何使用 MS Access 基于变量发送带有附加报告的自定义电子邮件? 2003 年或 2007 年