as3自定义事件小例

1.编写自定义事件类(StageEvent.as)

package events
{
    import flash.events.EventDispatcher;
    import flash.events.Event;
    public class StageEvent extends EventDispatcher
    {
        public static var instance:StageEvent;
        public var behavior:String="";
        public var source:String="";
       
        public function StageEvent()
        {
        }
        public static function getInstance():StageEvent
        {
            if(instance==null)
            {
                instance = new StageEvent();
            }
            return instance;
        }
        public function doAction(source:String,behavior:String,type:String,bubbles:Boolean=false,cancleable:Boolean=false):void
        {
            this.source = source;
            this.behavior = behavior;
            dispatchEvent(new Event(type,bubbles,cancleable));
        }
    }
}

 

2.用法:

在时间轴第一帧写入以下代码:

import events.StageEvent;
import Test;
var stageEvent:StageEvent;
stageEvent = StageEvent.getInstance();
btn.addEventListener(MouseEvent.CLICK,onMouseEventClickHandler);
new Test();
function onMouseEventClickHandler(evt:MouseEvent):void
{
   
    stageEvent.doAction(Test.CLICK,"click",Test.EVENT_TYPE);  //鼠标点击按钮,派发事件给Test类,由Test类执 //行相应操作
}

 

3.Test类,接受事件(Test.as)

package
{
    import flash.events.Event;
    import events.StageEvent;
    public class Test
    {
        public static var EVENT_SOURCE = "event_source";
        public static var EVENT_TYPE = "event_type";
        public static var CLICK = "click";
        public static var OPEN = "open";
        var stageEvent:StageEvent;
       
        public function Test()
        {
           
            stageEvent = StageEvent.getInstance();
            stageEvent.addEventListener(EVENT_TYPE,onEventHandler);
        }
       
        function onEventHandler(evt:Event):void
        {
           
            switch(evt.currentTarget.source)
            {
                case CLICK:
                trace("click");
                break;
                case OPEN:
                trace("open");
                break;
            }
        }
    }
}

 

你可能感兴趣的:(as3)