1、exml文件中通过id设定可拖拽的元素
<e:Group x="0" y="0" id="_dragGroup"></e:Group>
2、 对应TS文件中,获取对应exml中的元素
class AllotProduct extends eui.Component {
private _dragGroup: eui.Group
}
3、对应元素绑定方法
this._dragGroup.addEventListener(egret.TouchEvent.TOUCH_BEGIN, this.mouseDragDown, this);
this._dragGroup.addEventListener(egret.TouchEvent.TOUCH_END, this.mouseDragUp, this);
4、拖拽方法
// 定义拖动参数
private _touchStatus: boolean = false; //当前触摸状态,按下时,值为true
private _distance: egret.Point = new egret.Point() // 定义一个空的定位
// 方法
private mouseDragDown (evt: egret.TouchEvent) {
this._touchStatus = true;
this._distance.x = evt.stageX - this._dragGroup.x;
this._distance.y = evt.stageY - this._dragGroup.y;
this.stage.addEventListener(egret.TouchEvent.TOUCH_MOVE, this.mouseDragMove, this);
}
private mouseDragMove (evt: egret.TouchEvent) {
if (this._touchStatus) {
console.log('drag-move')
this._dragGroup.x = evt.stageX - this._distance.x;
this._dragGroup.y = evt.stageY - this._distance.y;
}
}
private mouseDragUp (evt: egret.TouchEvent) {
this._touchStatus = false;
this.stage.removeEventListener(egret.TouchEvent.TOUCH_MOVE, this.mouseDragMove, this);
}
--------------------------------------- 啥也不是的分割线 -----------------------------------------------
更好的实现方式思路:
大概是舞台上展示元素的时候只有一个,给当前展示的元素添加拖动事件就可以,不用一个画面一个画面的加,整体事件都添加在Base代码中