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; } } }