点击屏幕对显示对象进行操作:调整位置/旋转缩放模式/拖动

1.加载资源

2.将资源添加到显示列表并设置锚点

////////////////////////////////*调整位置关键代码*/

this.stage.addEventListener(egret.TouchEvent.TOUCH_BEGIN, (e: egret.TouchEvent) => {

显示对象.x = e.localX;
显示对象.y = e.localY;
}, this);

////////////////////////////////*旋转缩放模式关键代码*/

private static  STEP_ROT:number=3;

private static STEP_SCALE:number=.03

//用于记录当前模式,模式切换通过触摸舞台触发

private _animMode:number;

private _scaleBase:number;

private launchAnimations(0:void{

this._animMode = AnimaModes.ANIM_ROT;
this.stage.addEventListener(egret.TouchEvent.TOUCH_TAP, () => {

this._animMode = (this._animMode + 1) % 3;
}, this);
this._scaleBase = 0;
//根据当前模式调整旋转度数或缩放正弦基数形成相应动画
this.addEventListener(egret.Event.ENTER_FRAME, (e: egret.Event) => {
switch (this._animMode) {
case AnimaModes.ANIM_ROT:
this.显示对象.rotation += Main.STEP_ROT;
break;
case AnimaModes.AnimM_SCALE: //缩放范围0.5-1
this.显示对象.scaleX = this._dt.scaleY = 0.5 + 0.5 * Math.abs(Math.sin(this._scaleBase += Main.STEP_SCALE));
break;
}
this._txtInfo.text = "旋转角度:" + this.显示对象.rotation
+ "\n缩放比例:" + this.显示对象.scaleX.toFixed(2)
+ "\n点击进入" + (["缩放", "静止", "旋转"][this._animMode]) + "模式";
return false;//startTick 中回调返回值表示执行结束是否立即重绘
}, this);
}

}
class AnimaModes {
public static ANIM_ROT: number = 0;
public static AnimM_SCALE: number = 1;
}

/////////////////////////////////*拖动关键代码*/

 private 显示对象: egret.Bitmap;

private imgLoadHandler(e: egret.Event): void {
this.显示对象 = new egret.Bitmap(e.currentTarget.data);
var wHalf: number = this.显示对象.width / 2;
var hHalf: number = this.显示对象.height / 2;
this.显示对象t.anchorOffsetY = wHalf;
this.显示对象.anchorOffsetY = hHalf;
//随机初始位置
this.显示对象.x = wHalf + (this.stage.stageWidth - wHalf * 2) * Math.random();
this.显示对象.x = hHalf + (this.stage.stageHeight - hHalf * 2) * Math.random();
this.addChild(this._dt);
this.launchMove();
}
private launchMove(): void {
this.stage.addEventListener(egret.TouchEvent.TOUCH_MOVE, this.touchHandler, this);
}
private updateDT(stageX: number, stageY: number): void {
//显示对象同步手指位置
this.显示对象.x = stageX;
this.显示对象.y = stageY;
}
private touchHandler(e: egret.TouchEvent) {
switch (e.type) {
case egret.TouchEvent.TOUCH_MOVE:
this.updateDT(e.stageX, e.stageY);
break;
case egret.TouchEvent.TOUCH_BEGIN:
this.stage.addEventListener(egret.TouchEvent.TOUCH_MOVE, this.touchHandler, this);
this.stage.once(egret.TouchEvent.TOUCH_END, this.touchHandler, this);
this.updateDT(e.stageX, e.stageY);
break;
case egret.TouchEvent.TOUCH_END:
this.stage.removeEventListener(egret.TouchEvent.TOUCH_MOVE, this.touchHandler, this);
this.stage.addEventListener(egret.TouchEvent.TOUCH_BEGIN, this.touchHandler, this);

break;
}
}

http://developer.egret.com/cn/example/egret2d/index.html#010-disp-basic

猜你喜欢

转载自www.cnblogs.com/Ms-Sake/p/9978904.html
今日推荐