Actionscript使用信息调度自定义事件

时间:2013-12-04 03:16:49

标签: flash events actionscript

在动作中,我们可以发送事件:

dispatchEvent(new Event("MyEvent"));

通过这个听取事件:

stage.addEventListener("MyEvent", MyFunc);

但是如何通过事件传递其他信息以便我可以在MyFunc函数中访问它?

谢谢。

3 个答案:

答案 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);

希望它有所帮助。