class Main extends egret.DisplayObjectContainer {

    /**
     * Main 类构造器, 初始化的时候自动执行, ( 子类的构造函数必须调用父类的构造函数 super )
     * constructor 是类的构造函数, 类在实例化的时候调用
     * egret.Event.ADDED_TO_STAGE, 在将显示对象添加到舞台显示列表时调度
     */
    public constructor() {
        super();
        this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this);
    }

    /**
     * 手机屏幕的四大接触事件
     * egret.TouchEvent.TOUCH_TAP   点击事件
     * egret.TouchEvent.TOUCH_BEGIN 手指开始点击时
     * egret.TouchEvent.TOUCH_MOVE  手指在屏幕移动时
     * egret.TouchEvent.TOUCH_END   手指离开时
     */
    private onAddToStage(event: egret.Event) {

        // 设定2个偏移量
        var offsetX: number;
        var offsetY: number;

        // 画一个红色的圆
        var circle: egret.Shape = new egret.Shape();
        circle.graphics.beginFill(0xff0000);
        circle.graphics.drawCircle(25, 25, 25);
        circle.graphics.endFill();
        this.addChild(circle);
    
     // 如果要给显示对象添加事件, 一定要将事件能力属性设置为 true
     circle.touchEnabled = true;

        // 手指按到屏幕,触发 startMove 方法 
        circle.addEventListener(egret.TouchEvent.TOUCH_BEGIN, startMove, this);

        //手指离开屏幕,触发 stopMove 方法
        circle.addEventListener(egret.TouchEvent.TOUCH_END, stopMove, this);

        //计算手指和圆形的距离, 当手指在屏幕上移动时触发 onMove 方法
        function startMove(e: egret.TouchEvent): void {
            offsetX = e.stageX - circle.x;
            offsetY = e.stageY - circle.y;
            this.stage.addEventListener(egret.TouchEvent.TOUCH_MOVE, onMove, this);
        }
    
        //手指离开屏幕,移除手指移动的监听
        function stopMove(e: egret.TouchEvent) {  
       this.stage.removeEventListener(egret.TouchEvent.TOUCH_MOVE, onMove, this); }    //通过计算手指在屏幕上的位置,计算当前对象的坐标,达到跟随手指移动的效果 function onMove(e: egret.TouchEvent): void { circle.x = e.stageX - offsetX; circle.y = e.stageY - offsetY; } } }

 

posted on 2018-02-01 14:13  被遗忘的优雅  阅读(1707)  评论(1编辑  收藏  举报