egret事件模型

来源:互联网 发布:手机可以做淘宝客吗 编辑:程序博客网 时间:2024/06/05 04:56
// 定义了一个事件派发类
class Dispatcher extends egret.EventDispatcher {
    static lock: boolean = true;
    private static _instance: Dispatcher;
    public constructor() {
        if (Dispatcher.lock) throw "please use ins()";
        super();
    }

    // 注意此处是public static, this指向Dispatcher类, 而不是它的实例
    // 因此, _instance必须定义为静态成员才能获取
    public static get ins(): Dispatcher {
        if (this._instance == null || this._instance == undefined) {
            Dispatcher.lock = false;
            this._instance = new Dispatcher();
            Dispatcher.lock = true;
        }
        return this._instance;
    }
}

// 自定义事件
class GameEvent extends egret.Event {
    public constructor(type: string, data?: any, bubbles: boolean=false, cancelable: boolean=false) {
        super(type, bubbles, cancelable, data);
    }
}

// 自定义约会事件字符串列表
class DateEventType {
    static DATE: string = 'date';
    static KISS: string = 'kiss';
    static WATCH_MOVIE: string = 'watch_movie';
}

// BOY
class Boy extends egret.Sprite {
    public constructor() {
        super();
        this.childrenCreated();
    }

    protected childrenCreated(): void {
        let dateEvent: number = Math.floor(Math.random() * 3);
        console.log(dateEvent);
        switch (dateEvent) {
            case 0:
                Dispatcher.ins.dispatchEvent(new GameEvent(DateEventType.DATE, 0));
                break;
            case 1:
                Dispatcher.ins.dispatchEvent(new GameEvent(DateEventType.KISS, 1));
                break;
            case 2:
                Dispatcher.ins.dispatchEvent(new GameEvent(DateEventType.WATCH_MOVIE, 2));
                break;
        }
    }

}

////入口文档类

// 事件模型
class Main extends egret.DisplayObjectContainer {

    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToSatge, this);
    }

    private onAddToSatge(): void {
        Dispatcher.ins.addEventListener(DateEventType.DATE, this.onDate, this);
        Dispatcher.ins.addEventListener(DateEventType.KISS, this.onDate, this);
        Dispatcher.ins.addEventListener(DateEventType.WATCH_MOVIE, this.onDate, this);

        let boy: Boy = new Boy();
    }

    private onDate(e: GameEvent): void {
        switch (e.data) {
            case 0:
                console.log('date');
                break;
            case 1:
                console.log('kiss');
                break;
            case 2:
                console.log('watch_movie');
                break;
        }
    }
}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 4个月宝宝粘人怎么办 7个月宝宝粘人怎么办 8个月孩子太粘人怎么办 7个月宝宝太粘人怎么办 两岁宝宝粘人怎么办 孩子屁股被打了怎么办 长期被骂的孩子怎么办 儿童感冒咳嗽怎么办最有效 打了排卵针不排卵怎么办 孩孑上课不专心怎么办 4岁上课不听讲怎么办 孩子上课不认真听讲怎么办 孩子做什么都慢怎么办 7岁上课不听讲怎么办 打孩子脸肿了怎么办 一岁宝宝太调皮怎么办 怀孕早期喝了酒怎么办 怀孕期间喝了酒怎么办 一岁宝宝多动怎么办 3岁前儿童多动症怎么办 好动症的孩子该怎么办 18个月宝宝腹泻怎么办 8个月小孩发烧怎么办 八个月大宝宝发烧怎么办 8个月宝宝拉稀水怎么办 八个月宝宝38度怎么办 8个月的宝宝发烧怎么办 八个月大的宝宝拉肚子怎么办 9孩子上课坐不住怎么办 3岁宝宝太皮怎么办 4岁的宝宝多动症怎么办 小孩好动注意力不集中怎么办 乐扣加热变形了怎么办 3岁宝宝咳嗽厉害怎么办 六个月婴儿呕奶怎么办 刚出生婴儿呕奶怎么办 宝宝拉颗粒便便怎么办 奶水不够宝宝又不吃奶粉怎么办 一岁突然不吃饭怎么办 母乳不够吃宝宝不吃奶粉怎么办 八个月不吃辅食怎么办