EventDispatcher的用法

      Flash 2005-11-3 15:18
类文件:AScript.as:
import mx.events.EventDispatcher;//导入该类
class AScript {
    var square_mc:MovieClip;
    //定义该类所必须实现的三个方法
    function dispatchEvent() {
    }
    function addEventListener() {
    }
    function removeEventListener() {
    }
    //发送该类自身的实例到初始化事件
    function AScript() {
        mx.events.EventDispatcher.initialize(this);
    }//自定义类的一个方法
    function drowIt(clip:MovieClip) {
        clip.createEmptyMovieClip("square_mc", clip.getNextHighestDepth());
        this.square_mc = clip.square_mc;
        square_mc.beginFill(0xFF0000);
        square_mc.moveTo(10, 10);
        square_mc.lineTo(100, 10);
        square_mc.lineTo(100, 100);
        square_mc.lineTo(10, 100);
        square_mc.lineTo(10, 10);
        square_mc.endFill();
        //该事件被广播以后,这个事件的对象能被传递到任何一个监听对象当中,所以需要指定一个目标的对象和触发的事件名称
        //这里的对象是他本身,当然也可以指定其他的对象
        var eventObject:Object = {target:this, type:"drown"};
        //为该对象定义两个属性
        eventObject.A = "square";
        eventObject.B = clip.square_mc;
        //派遣该对象
        dispatchEvent(eventObject);
    }
}
-----------
fla文件:AS.fla
var AS:AScript = new AScript();//实例化类
var mylis = new Object();//定义一个监听的对象
mylis.drown = function(obj) {//定义一个监听对象的方法,这里与类中指定的目标对象的方法对应
    trace(obj.A);//传递的参数因为是目标对象,所以这里可以实现该对象的方法和属性
    trace(obj.B);
};
AS.addEventListener("drown", mylis);//注册该监听对象及其方法到实例上
AS.drowIt(_root);//触发事件。。。
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}