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;
}
}
}
来源:oschina
链接:https://my.oschina.net/u/4406918/blog/4455223