egret-初步接触

class HelloTime extends egret.DisplayObjectContainer {
    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);

    }
    private spr: egret.Sprite; // 定义变量类型

    private async onAddToStage(event: egret.Event) {
        this.spr = new egret.Sprite();
        // spr.graphics.beginFill(0xff0000);
        // spr.graphics.drawRect(0, 0, 100, 100);
        // spr.graphics.endFill();
        // this.addChild(spr);
        this.addChild(this.spr);
        this.spr.width = 480;
        this.spr.height = 800;
        this.drawTxt();
        this.drawContent();

        /** --------------调用自己定义的class------------ */
        // let _nCar: Card = new Card();
        // this.addChild(_nCar);

        // let _nAddView: AddView = new AddView();
        // this.addChild(_nAddView);

        // let _ManagerMent: ManagerMent = new ManagerMent();
        // this.addChild(_ManagerMent);

        // let _ChildrenObject: ChildrenObject = new ChildrenObject();
        // this.addChild(_ChildrenObject);

        // let _SimpleDate1: SimpleDate1 = new SimpleDate1();
        // this.addChild(_SimpleDate1);

        // let _TouchEventTest1: TouchEventTest1 = new TouchEventTest1();
        // this.addChild(_TouchEventTest1);

        // let _GraphicsTest: GraphicsTest = new GraphicsTest();
        // this.addChild(_GraphicsTest);

        // let _MayTest:MayTest = new MayTest();
        // this.addChild(_MayTest);

        // let _MyTweenAnim:MyTweenAnim = new MyTweenAnim()
        // this.addChild(_MyTweenAnim);

        // let _MyTimer1:MyTimer1 = new MyTimer1();
        // this.addChild(_MyTimer1);

        // let _MyBitMay1:MyBitMay1 = new MyBitMay1();
        // this.addChild(_MyBitMay1);

        let _MyBitMay2: MyBitMay2 = new MyBitMay2();
        this.addChild(_MyBitMay2);


        // let _MyPic: MyPic = new MyPic()
        // this.addChild(_MyPic);

        /** --------------调用自己定义的class------------ */


        //加载图片
        RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE, this.onButtonComp, this);//3-5个参数
        // RES.loadConfig('resource/default.res.json', 'resource/');
        await RES.loadConfig("resource/default.res.json", "resource/");
        RES.loadGroup('button1', 1); // 增加资源组
        //填加定时器 
        this.timer = new egret.Timer(1000, 8);// 两个属性分别是 delay 与 repeatCount ,两个属性分别表示每次间隔的时间(以毫秒为单位)和执行的次数
        this.timer.addEventListener(egret.TimerEvent.TIMER, this.timerFunc, this); // 定时器执行时 触发
        this.timer.addEventListener(egret.TimerEvent.TIMER_COMPLETE, this.timerComFunc, this); //定时器 执行完成后 触发

    }
    private num: egret.TextField;
    private n: number = 6;
    private con: egret.TextField;
    private timer: egret.Timer; // 声明计时器
    private date: Date;

    private drawTxt(): void {
        this.num = new egret.TextField();
        this.num.text = this.n.toString();
        this.num.size = 100;
        this.num.width = 480;
        this.num.textColor = 0x00ff00;
        this.num.textAlign = egret.HorizontalAlign.CENTER; // 样式居中
        this.spr.addChild(this.num);
    }
    private drawContent(): void {
        this.con = new egret.TextField();
        this.con.text = '默默倒数六秒 迅速点击文字';
        this.con.textColor = 0x00ff00;
        this.con.width = 480;
        this.con.textAlign = egret.HorizontalAlign.CENTER;
        this.con.y = 120;
        this.spr.addChild(this.con);


    }
    private img: egret.Bitmap;
    private startTime: number;
    private stopTime: number;
    private finalTime: number;
    private onButtonComp(): void {
        this.img = new egret.Bitmap();
        this.img.texture = RES.getRes('btn1');// 加载图片
        let rect: egret.Rectangle = new egret.Rectangle(10, 10, 15, 15);
        this.img.scale9Grid = rect;
        this.img.y = 200;
        this.img.x = 215;
        this.img.width = 50;
        this.img.height = 50;
        this.spr.addChild(this.img);
        this.img.touchEnabled = true;
        this.img.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onTouch, this);
    }
    private onTouch(evt: egret.TouchEvent) {
        this.date = new Date();
        this.startTime = this.date.getTime();

        this.img.alpha = 0;
        this.timer.start(); // 启动 停止 暂停 
        this.drawTxt();
        this.spr.touchEnabled = true;
        this.spr.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onToucnSRP, this, true);
    }

    private timerFunc() {
        if (this.n <= 3) {
            this.num.text = '?';
        } else {
            this.spr.removeChildren();
            this.drawTxt();
        }
        this.n--;
    }

    private timerComFunc() {
        if (this.n <= -2) {
            this.drawContent();
            this.con.text = '别迷糊了快醒醒';
            this.spr.removeEventListener(egret.TouchEvent.TOUCH_TAP, this.onToucnSRP, this, true);
        }
    }
    private onToucnSRP(event: egret.TouchEvent) {
        this.date = new Date();
        this.stopTime = this.date.getTime();
        this.finalTime = this.startTime - this.stopTime;
        this.num.text = (this.finalTime / 1000 + 6).toFixed(3);
        this.timer.stop();
        this.drawContent();// 重新绘制
        this.spr.removeEventListener(egret.TouchEvent.TOUCH_TAP, this.onToucnSRP, this, true);

        switch (Math.floor(Math.abs(this.finalTime / 1000 + 6))) {
            case 0:
                this.con.text = '很专注';
                break;
            case 1:
                this.con.text = '一般专注';
                break;
            case 2:
                this.con.text = '不专注';
                break;
        }
    }



}

class Card extends egret.Sprite {
    public constructor() {
        super();
        this.drawCard();
    }
    private drawCard() {
        this.graphics.beginFill(0x0000ff);
        this.graphics.drawRect(190, 300, 50, 50);
        this.graphics.drawRect(240, 350, 50, 50);
        this.graphics.beginFill(0xff0000);
        this.graphics.drawRect(240, 300, 50, 50);
        this.graphics.drawRect(190, 350, 50, 50);
        this.graphics.endFill();
    }
}

// class AddView extends egret.DisplayObjectContainer{ 
class AddView extends egret.Sprite {
    public constructor() {
        super();
        this.onAddTostage();
    }
    private onAddTostage() {
        let spr: egret.Sprite = new egret.Sprite();

        spr.graphics.beginFill(0xff0000);
        spr.graphics.drawRect(215, 420, 50, 50);
        spr.graphics.endFill();
        //该对象以存在
        this.addChild(spr);
        // this.removeChild(spr);// 删除对象
        // 该对象 保存于内存中
        let spr1: egret.Sprite = new egret.Sprite();
        spr1.graphics.beginFill(0x00ff00);
        spr1.graphics.drawRect(215, 420, 25, 25);
        spr1.y = 10;
        spr1.x = 10;
        this.addChild(spr1);
        spr.addChild(spr1);
        console.log(this.numChildren);

    }
}

//深度值
class ManagerMent extends egret.DisplayObjectContainer {
    public constructor() {
        super();
        this.onAddToStage();
    }
    private onAddToStage() {
        let spr: egret.Sprite = new egret.Sprite();
        spr.graphics.beginFill(0xff0000);
        spr.graphics.drawRect(0, 0, 50, 50);
        spr.graphics.endFill();
        spr.x = 215;
        spr.y = 480;
        this.addChild(spr);
        //深度值 z--测序
        console.log(this.numChildren);
        let spr1: egret.Sprite = new egret.Sprite();
        spr1.graphics.beginFill(0x00ff00);
        spr1.graphics.drawRect(0, 0, 50, 50);
        spr1.graphics.endFill();
        spr1.x = 215;
        spr1.y = 540;
        this.addChild(spr1);
        console.log(this.numChildren);

        let sprcon: egret.Sprite = new egret.Sprite();
        this.addChild(sprcon);
        sprcon.x = 10;
        for (let i: number = 0; i < 4; i++) {
            let spr: egret.Sprite = new egret.Sprite();
            spr.graphics.beginFill(0xffffff * Math.random());
            spr.graphics.drawRect(0, 0, 40, 20);
            spr.graphics.endFill();
            spr.x = i * 20;
            spr.y = 600;
            sprcon.addChild(spr);
        }
        let sprNew1: egret.Sprite = new egret.Sprite();
        sprNew1.graphics.beginFill(0xff0000);
        sprNew1.graphics.drawRect(0, 0, 40, 30);
        sprNew1.graphics.endFill();

        sprNew1.x = 10;
        sprNew1.y = 600;
        // sprcon.addChild(sprNew1);
        sprcon.addChildAt(sprNew1, 1); // 按照下标插入
        //修改指定下标 内的深度
        sprcon.swapChildrenAt(1, 3); //修改指定下标 内的深度
        //修改 深度
        sprcon.setChildIndex(sprNew1, 4);
    }
}

//获取子对象 通过深度值
class ChildrenObject extends egret.DisplayObjectContainer {
    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
    }
    private onAddToStage(event: egret.Event) {
        let spr: egret.Sprite = new egret.Sprite();
        this.addChild(spr);

        let spr1: egret.Sprite = new egret.Sprite();
        spr1.graphics.beginFill(0x00ff00);
        spr1.graphics.drawRect(0, 0, 100, 100);
        spr1.graphics.endFill();
        spr1.x = 50;
        spr1.name = 'hello';
        spr.addChild(spr1);

        let _spr: egret.DisplayObject = spr.getChildAt(0);// 比较快
        // let _spr: egret.DisplayObject = spr.getChildByName('hello');// 性能低
        _spr.scaleX = 0.5;
    }
}

// 7. 事件机制原理及流程
class SimpleDate1 extends egret.DisplayObjectContainer {
    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
    }
    private onAddToStage(event: egret.Event) {
        //创建一个男
        let boy1: Boy = new Boy();
        boy1.name = 'tong';

        let girl1: Girl = new Girl();
        girl1.name = 'xiao xue';

        // 注册监听事件 第四个参数是冒泡 ,最后一个参数是优先级 数字越大越优先处理
        boy1.addEventListener(DataEvent.DATE, girl1.getDate, girl1, false, 10);

        //检测监听器
        if (boy1.hasEventListener(DataEvent.DATE)) {
            console.log('已经注册');
        }

        // 邀请函数 
        boy1.order();
        // 移除监听器
        boy1.removeEventListener(DataEvent.DATE, girl1.getDate, girl1);
        if (!boy1.hasEventListener(DataEvent.DATE)) {
            console.log('未注册');
        }
    }

}

//8. 事件类
class DataEvent 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: string 事件类型
    // bulles: boolean = false :指定是否参与冒泡阶段
    // cancelable: boolean = false : 是否取消掉事件的 event 事件 
    public constructor(type: string, bulles: boolean = false, cancelable: boolean = false) {
        super(type, bulles, cancelable);
    }
}
class Boy extends egret.Sprite {
    public constructor() {
        super();
    }
    public order() {
        let daterEvent: DataEvent = new DataEvent(DataEvent.DATE);
        daterEvent._year = 2018;
        daterEvent._month = 7;
        daterEvent._date = 21;
        daterEvent._where = '家里';
        daterEvent._todo = '学习';
        //发送请求事件
        this.dispatchEvent(daterEvent);
    }
}

class Girl extends egret.Sprite {
    public constructor() {
        super();
    }
    public getDate(event: DataEvent): void {
        console.log('收到了:' + event.target.name + '的邀请');
        console.log('希望在:' + event.target._year + '年' + event.target._month + '月' + event.target._date + '日' + event.target._where + event.target._todo);
    }
}

//9. 事件实例 填加事件 案例
class TouchEventTest1 extends egret.DisplayObjectContainer {
    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
    }
    public spr: egret.Sprite; // 定义变量类型

    private onAddToStage(event: egret.Event) {

        this.drawText();
        this.spr = new egret.Sprite();
        this.spr.graphics.beginFill(0x465112);
        this.spr.graphics.drawRect(0, 0, 50, 50);
        this.spr.graphics.endFill();
        this.spr.x = 100;
        this.spr.y = 100;

        this.addChild(this.spr);
        // this.drawContent();
        this.spr.touchEnabled = true;//开启点击
        this.spr.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onTouch, this);
    }
    private onTouch(event: egret.Event): void {
        this.txt.text = '点击了小方块';
    }

    //绘制文本
    private txt: egret.TextField;
    private drawText(): void {
        this.txt = new egret.TextField();
        this.txt.text = '点击';
        this.txt.width = 200;
        this.txt.height = 200;
        this.txt.size = 12;
        this.txt.textColor = 0x00ff00;
        this.txt.textAlign = egret.HorizontalAlign.CENTER;
        this.txt.x = 100;
        this.txt.y = 100;
        this.addChild(this.txt);

    }
}

//10. 绘图

class GraphicsTest extends egret.DisplayObjectContainer {
    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
    }
    private onAddToStage(event: egret.Event) {
        let shp: egret.Shape = new egret.Shape();
        shp.graphics.beginFill(0x123212, 0.8); //可设置透明度
        shp.graphics.lineStyle(10, 0x455333);
        shp.graphics.drawRect(150, 150, 50, 50); //绘制矩形
        // shp.graphics.drawCircle(0, 0, 50);// 绘制圆形
        shp.graphics.endFill();
        this.addChild(shp);
        this.drawLine();
        this.drawCurve();
    }
    //lineStyle 设置当前区域的外边框 


    // 绘制直线
    private drawLine(): void {
        let shp1: egret.Shape = new egret.Shape();
        shp1.graphics.lineStyle(1, 0x00ff00);
        shp1.graphics.moveTo(0, 0);//起点
        shp1.graphics.lineTo(50, 50);//终点
        shp1.graphics.lineTo(30, 25);//终点
        shp1.graphics.lineTo(10, 55);//终点
        shp1.graphics.lineTo(11, 55);//终点
        shp1.graphics.lineTo(99, 0);//终点

        shp1.graphics.endFill();
        this.addChild(shp1);
    }

    // 曲线的形成
    private drawCurve(): void {
        let shp2: egret.Shape = new egret.Shape();
        shp2.graphics.lineStyle(3, 0x00ff00);
        shp2.graphics.moveTo(100, 100);//起点
        shp2.graphics.curveTo(200, 200, 400, 50);// 曲线的形成
        shp2.graphics.endFill();
        this.addChild(shp2);

    }
}

//11.文本  
class MayTest extends egret.DisplayObjectContainer {
    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
    }
    private onAddToStage(event: egret.Event) {
        let laber: egret.TextField = new egret.TextField();
        laber.text = '这是一个文本域';
        laber.textColor = 0x000000;
        laber.width = 400;//设置宽度
        // laber.height=100;//设置高度
        // laber.fontFamily='KaiTi';//字体
        this.addChild(laber);
        console.log(laber.width + ':' + laber.height);

        //文字的布局
        laber.textAlign = egret.HorizontalAlign.RIGHT;
        //设置ziti
        laber.bold = true; //粗体   等等
        laber.italic = true;//斜体  等等
    }
}
//12. 动画
//01.MovieClip 序列帧动画 影片剪辑

class MyTweenAnim extends egret.DisplayObjectContainer {
    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
    }
    private onAddToStage(event: egret.Event) {
        let shp: egret.Shape = new egret.Shape();
        shp.graphics.beginFill(0x00ff00);
        shp.graphics.drawRect(0, 0, 100, 100);
        shp.graphics.endFill();
        this.addChild(shp);

        //动画处理 类 egret.Tween
        let tweeen = egret.Tween.get(shp);
        tweeen.to({
            x: 300,//x坐标
            y: 300 //y 坐标
        }, 2000);
    }
}

//13 计时器
class MyTimer1 extends egret.DisplayObjectContainer {
    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
    }

    /**
     * 2个属性 delay, repeatCount
     * 3个方法 start, reset, stop
     * 2个事件 TimerEvent.TIMER, TimerEvent.TIMER_COMPLETE
     */
    private onAddToStage(event: egret.Event) {
        let timer: egret.Timer = new egret.Timer(1000, 5);//间隔1000 执行5次
        //注册监听事件
        timer.addEventListener(egret.TimerEvent.TIMER, this.timerFunc, this);
        timer.addEventListener(egret.TimerEvent.TIMER_COMPLETE, this.timerComFunc, this);
        timer.start();
        // timer.stop();
    }
    private timerFunc() {
        console.log('计时开始')
    }
    private timerComFunc() {
        console.log('计时结束')
    }
}

// 14.位图纹理
class MyBitMay1 extends egret.DisplayObjectContainer {
    public constructor() {
        super()
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
    }
    private onAddToStage(event: egret.Event) {
        //完成 预加载 
        RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE, this.configEvent, this);
        // 预加载
        // RES.addEventListener(RES.ResourceEvent.GROUP_PROGRESS,this.addImage,this);
        RES.loadConfig('resource/default.res.json', 'resource/');// 具体路径 补充

    }
    private configEvent(event: egret.Event) {
        RES.removeEventListener(RES.ResourceEvent.GROUP_COMPLETE, this.configEvent, this);
        RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE, this.addImage, this);
        RES.loadGroup('button');
    }
    private addImage() {
        let img1: egret.Bitmap = new egret.Bitmap();
        img1.texture = RES.getRes('btn1');//获取资源 同步获取资源
        this.addChild(img1);//设置优先级
    }
    /**获取资源
     * getRes() 同步获取
     * getResAsync() 从缓存加载 如果没有则通过网络获取
     * getResByUrl() 网络获取
     */

}
//资源 加载
//资源加载模块 RES 模块是一套完善的资源加载模块
//资源加载配置 可以配置资源组

//15.九宫格的使用
class MyPic extends egret.DisplayObjectContainer {
    public constructor() {
        super();
        // this.addEventListener(egret.Event.ADDED_TO_STAGE,this.onAddToStage,this);
    }
    // private async onAddToStage(event:egret.Event){
    // RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE,this.addImage,this);
    // await RES.loadConfig('resource/assets/toolt.png','resource/')
    // await RES.loadGroup('toolt2');
    // }
    private addImage() {
        // let img:egret.Bitmap = new egret.Bitmap();
        // img.texture = RES.getRes("toolt");
        // this.addChild(img);

        // img.x = 150;

        // let img1:egret.Bitmap = new egret.Bitmap();
        // img1.texture = RES.getRes("toolt");
        // //使用九宫格
        // let rect:egret.Rectangle = new egret.Rectangle(30,31,40,41);
        // img1.scale9Grid = rect;
        // // img1.height *= 2; 

        // console.log(img1.width);
        // console.log(img1.height);
        // img1.x = 50;
        // img1.y = 200;
        // this.addChild(img1);
    }

}

// 14.位图纹理
class MyBitMay2 extends egret.DisplayObjectContainer {
    public constructor() {
        console.log('MyBitMay23');

        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
    }
    private onAddToStage(event: egret.Event) {
        RES.addEventListener(RES.ResourceEvent.GROUP_PROGRESS, this.addImage, this);

        try {
            const loadingView = new LoadingUI();
            this.stage.addChild(loadingView);
            RES.loadConfig("resource/default.res.json", "resource/");
            RES.loadGroup("preload", 0, loadingView);
            this.stage.removeChild(loadingView);
        }
        catch (e) {
            console.error(e);
        }
    }
    private addImage() {
        console.log('MyBitMay2');
        let img1: egret.Bitmap = new egret.Bitmap();
        img1.texture = RES.getRes('description_json');//获取资源 同步获取资源
        img1.fillMode = egret.BitmapFillMode.REPEAT;
        this.addChild(img1);//设置优先级

    }

    /**获取资源
     * getRes() 同步获取
     * getResAsync() 从缓存加载 如果没有则通过网络获取
     * getResByUrl() 网络获取
     */

}
// 使用雪碧图
class MyMaps extends egret.DisplayObjectContainer {
    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
    }
    private onAddToStage(event: egret.Event) {
        RES.addEventListener(RES.ResourceEvent.GROUP_COMPLETE, this.addImg, this);
        RES.loadConfig("resource/default.res.json", "resource/");
        RES.loadGroup("lg");//倒入 纹理集生成的 .json
    }
    private addImg() {
        let imgs: egret.SpriteSheet = RES.getRes("logo");//引入需要的img部分
        let img: egret.Bitmap = new egret.Bitmap();
        img.texture = imgs.getTexture("toolt");
        this.addChild(img);
    }
}

  

猜你喜欢

转载自www.cnblogs.com/tongbiao/p/9369001.html