双指触控和单指触控的冲突

遇到问题:在使用双指放缩的时候屏幕会不停的抽搐闪动

环境:LayaBox下的panel,panel上下可滚动

发现:在事件触发的时候打出日志,发现触发了2次按下事件,2次的touch的list不一样,长度分别为1,2;

解决:

再第二个手指触碰的时候解除监听精灵的单指触碰的所有事件,

2根手指触碰的时候必定会有先后顺序,在第一个手指触碰到屏幕的时候就会触发panel的滚动事件,当第2个手指再触碰的时候再次触发屏幕放缩事件,所以就要在双指触碰的时候就要解除那个精灵单指触碰的所有事件。

 

但是因为不知道panel滚动监听的是什么事件,所以自己就写了一个类似panel的左右滚动事件,具体如下:


var tempX:number = this.bgsmallImg.x;
var tempY:number = this.bgsmallImg.y;

tempX += ex-this._cx;
tempY += ey-this._cy;

if(tempX>this.landLayer.hScrollBar.value){//最大是0,滚动到最左边,最靠左边
	tempX=this.landLayer.hScrollBar.value;
}
var maxWidth:number = this.bgsmallImg.width*this.bgsmallImg.scaleX-this.width-this.landLayer.hScrollBar.value;//this.bgsmallImg.width滚动对象的宽度*放缩倍速-滚动屏幕宽度-panel滚动的x轴距离
if(tempX<-maxWidth){//x小于最大滚动距离
	tempX=-maxWidth;
}

if(tempY>-this.landLayer.vScrollBar.value){
	tempY=this.landLayer.vScrollBar.value;
}
var maxHeight:number = this.bgsmallImg.height*this.bgsmallImg.scaleY-this.height-this.landLayer.vScrollBar.value;
if(tempY<-maxHeight){
	tempY=-maxHeight;
}
this.bgsmallImg.x = tempX;
this.bgsmallImg.y = tempY;

 

写出滚动事件之后,就没什么问题了,在双指触发的时候解除滚动事件,双指事件解除的时候就添加回来。

 

根据上面同理,3指触控 n指触控都是这样,先解除 n-1之前的事件(此处在绑定事件的时候处理一下,解除的时候采用递归就可以了)

当然,也可以声明 全局变量 来禁止事件的执行,但是这个依然会执行1次不想要的事件,比如双指事件用全局变量禁止,依然会执行1次单指事件,并且派发出事件

小白一枚,由于之前不太了解那个事件的机制所以这里就进坑了。大家有什么更好的办法吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值