在开发项目过程中,总有各个不同的需求,比如
既然有叠加那他们的层级关系必有一个在上一个在另一个的下面,按照我们现有的点击事件触发的规则,点击重叠的部分就会点击到最上的那一层,那么怎样避免这种情况呢。
精准像素判断就可以实现:pixelHitTest = true
class Test extends eui.Component {
private image1: eui.Image;//底层图片一
private image2: eui.Image;//叠加上层图片2
constructor() {
super();
}
//打开view时回调函数
open(): void {
//对两个image进行监听
this.image1.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onBtnClick, this);
this.image2.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onBtnClick, this);
//对底层的图片打开精准像素判断
this.image1.pixelHitTest = true;
}
//监听回调函数
private onBtnClick(e: egret.TouchEvent): void {
switch (e.target) {
case this.image1:
console.log("点击点是属于iamge1")
break;
case this.image2:
//点击到叠加层是对下层进行精准判断
if (this.image1.hitTestPoint(e.stageX, e.stageY) == true) {
console.log("点击点是属于iamge1");
break;
}
console.log("点击点是属于iamge2")
break;
default:
break;
}
}
//移除页面操作
private close(): void {
this.image1.removeEventListener(egret.TouchEvent.TOUCH_TAP, this.onBtnClick, this);
this.image2.removeEventListener(egret.TouchEvent.TOUCH_TAP, this.onBtnClick, this);
}
}
主要的代码就是判断点与像素的碰撞。