export interface ITransformerMove{ target: TransformerPointRender; dx: number; dy: number; moveX: number; moveY: number; rotation?: number; } export interface IP9Target{ x: number; y: number; width: number; height: number; rotation: number; anchorX: number; anchorY: number; scaleX: number; scaleY: number; } export class TransformerPointRender extends egret.Sprite { private _isTouchDown: boolean; static size: number = 8; onMove: Function; private _touchDownPos: egret.Point; private _oldTouchDownPos: egret.Point; private _type: number = 0; constructor(type:number) { super(); this._type = type; this.addEventListeners(); this.onRender(); } get type() { return this._type; } get isTouchDown() { return this._isTouchDown; } addEventListeners() { this.touchEnabled = this.touchChildren = true; this.addEventListener(egret.TouchEvent.TOUCH_BEGIN, this.onTouchBegin, this); } protected onTouchBegin(event: egret.TouchEvent) { this.stage.addEventListener(egret.TouchEvent.TOUCH_END, this.onTouchEnd, this); this.stage.addEventListener(egret.TouchEvent.TOUCH_MOVE, this.onTouchMove, this); this._isTouchDown = true; this._oldTouchDownPos = this._touchDownPos = new egret.Point(event.stageX, event.stageY); } protected onTouchEnd(event: egret.TouchEvent) { this._isTouchDown = false; this.stage.removeEventListener(egret.TouchEvent.TOUCH_END, this.onTouchEnd, this); this.stage.removeEventListener(egret.TouchEvent.TOUCH_MOVE, this.onTouchMove, this); } protected onTouchMove(event: egret.TouchEvent) { if (this._isTouchDown) { if (this.onMove) { let transformMove: ITransformerMove = { target: this, dx: event.stageX - this._oldTouchDownPos.x, dy: event.stageY - this._oldTouchDownPos.y, moveX: event.stageX - this._touchDownPos.x, moveY: event.stageY - this._touchDownPos.y }; this.onMove(transformMove); this._oldTouchDownPos.x = event.stageX; this._oldTouchDownPos.y = event.stageY; } } } protected onRender() { this.graphics.clear(); this.graphics.beginFill(0xffffff, 0.001); this.graphics.drawCircle(0, 0, TransformerPointRender.size); this.graphics.endFill(); this.graphics.lineStyle(1, 0x00debc); this.graphics.beginFill(0xffffff); this.graphics.drawCircle(0, 0, TransformerPointRender.size / 3); this.graphics.endFill(); } }