您的位置:首页 > Web前端 > JavaScript

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

2016-01-22 23:27 579 查看
  今天要实现一个功能,要用到层拦截点击事件的功能,过程中走了一些弯路,下面记录一下所学的。

实现功能:

  在已有的界面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函数没有运行。

代码和截图有需要的话,下次补上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: