在动作中,我们可以发送事件:
dispatchEvent(new Event("MyEvent"));
通过这个听取事件:
stage.addEventListener("MyEvent", MyFunc);
但是如何通过事件传递其他信息以便我可以在MyFunc
函数中访问它?
谢谢。
答案 0 :(得分: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类。
答案 1 :(得分:0)
您必须制作自定义事件,并向其添加自定义属性。这是一个例子。
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取决于您是否希望它在显示列表中冒泡。
答案 2 :(得分:0)
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);
希望它有所帮助。