egret基础:事件处理机制

2019-07-07  本文已影响0人  coffee1949

事件发送者
具体的事件
事件侦听者

具体的事件:约会

class DateEvent extends egret.Event{
    // 具体的事件:约会    
    public static DATE:string = '约会'

    public _year:number = 0         // 事件发生在哪年
    public _month:number = 0        // 哪月
    public _date:number = 0         // 哪天
    public _where:string = ''       // 什么地方
    public _todo:string = ''        // 具体干什么

    // 构造函数必须有参数,
    // type:类型
    // bulles:是否冒泡
    // cancelable:是否答应
    public constructor(type:string,bulles:boolean = false,cancelable:boolean = false){
        super(type,bulles,cancelable)
    }
}

事件发送者:男朋友

class Man extends egret.Sprite{
    public constructor(){
        super()
    }

    public order(){
        // 生成一个 约会事件 的事件对象,,,要传递一个事件类型:type参数
        var dateEvent:DateEvent = new DateEvent(DateEvent.DATE)
        // dateEvent是一个具体的事件,,

        // 给dateEvent约会事件添加具体的信息
        dateEvent._year = 2018
        dateEvent._month = 7
        dateEvent._date = 7
        dateEvent._where = '鹊桥'
        dateEvent._todo = '约会'

        // 发送请求事件,,,dateEvent就是一个具体的事件
        this.dispatchEvent(dateEvent)
    }
}

事件侦听者:女朋友

class Woman extends egret.Sprite{
    public constructor(){
        super()
    }

    // 侦听约会事件
    public getData(event:DateEvent):void{
        console.log('得到了' + event.target.name + '的约会邀请')
        console.log(`希望${event._year}年${event._month}月${event._date}日你可以和我在${event._where}${event._todo}`)
    }
}

主函数

class Main extends egret.DisplayObjectContainer{
    public constructor(){
        super()
        this.addEventListener(egret.Event.ADDED_TO_STAGE,this.init,this)
    }

    private init(event:egret.Event){
        // 创建男朋友
        let man:Man = new Man()
        man.name = '叶遮天'
        
        // 创建女朋友
        let woman:Woman = new Woman()
        woman.name = '紫月'

        // 注册侦听事件,女朋友侦听DateEvent.Date事件,并getDate处理
        man.addEventListener(DateEvent.DATE,woman.getData,woman)
        // 男朋友邀请
        man.order()
        // 移除侦听器
        man.removeEventListener(DateEvent.DATE,woman.getData,woman)

    }
}
上一篇 下一篇

猜你喜欢

热点阅读