coco2dx-js 实现 层拦截 点击响应事件

  今天要实现一个功能,要用到层拦截点击事件的功能,过程中走了一些弯路,下面记录一下所学的。
实现功能:
  在已有的界面A中,点击A的一个按钮后,弹出界面B。这时点击界面B的时候,界面A不接收点击响应。关闭B界面后,A界面又可以点击,接收点击响应。
  简单说就是,拦截层B出现的时候界面A不可点击,消失的时候界面A可点击。

预备知识(可以先不看,直接跳到做法,然后在返回来看):
界面B要拦截点击响应,要满足两点(下面的界面B表示拦截层):
  第一:界面B要接收到点击事件(界面B接收点击事件后,才能对点击事件处理。是否接收到点击响应,取决于begin函数的返回值,返回true,表示能接收到。返回false,表示没有收到点击响应)
  第二:界面B开启吞噬点击事件,即吞噬为true
  (注意:不管界面B有没有隐藏,只要满足上面两个条件,界面B就会拦截点击)

  根据界面B拦截响应的两个条件(要接收到响应,且设吞噬为true),我们可以控制上面两个条件来实现拦截功能。

做法:
1、界面B接收一直能事件,控制界面B的吞噬开和关,:
  界面B初始吞噬为false(这样界面A可以接收到点击)
  界面B弹出后,吞噬为true(这样就界面A就接收不到点击事件)
  界面B关闭后,吞噬为 false(界面A又可以接收到点击了)
  注意:界面B隐藏后,如果吞噬不设为false,还是会吞噬

2、界面B吞噬一直为true,控制 界面B接收点击事件的开和关:
  用一个变量控制是否让B接收到点击事件。(界面B没有接收到点击事件的话,就是开启吞噬,也拦截不了)
  一开始begin函数返回值设为false(界面B不接收事件,所以界面A可以接收到点击)
  界面B弹出后,begin函数的返回值设为true(界面B能接收点击,且吞噬为true,所以界面A接收不到点击事件)
  界面B关闭后,begin函数的返回值设为false(界面B不接收事件,所以界面A可以接收到点击)

做法比较:
  第一种做法,在拦截层隐藏的时候,因为begin 一直为true,所以界面B一直都有接收的事件,即move和end都有运行。
  第二种,在拦截层隐藏的时候,move和end函数没有运行。

代码和截图有需要的话,下次补上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值