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;
}
}
}
}