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 接收触摸事件