【cocos2d-js教程】cocos2d-js 遮挡层(禁止触摸事件传递层)
在游戏中,我们经常会碰到一些弹窗,这些弹窗禁止点透,也就是禁止触摸事件传递到底层,我们称之为遮挡层,这些遮挡层,需要开发遮挡层,我们首先得了解cocos2d-js的触摸传递机制,本文主要针对cocos2d-js v3.0 final版本。
根据官方文档,我们可以得知,触摸方式有五种,但是根据需求,我们需要做的是拦截触摸监听。
所以我们简单封装了这么一个类,如下所示:
cc.ModelLayerColor = cc.LayerColor.extend({
  m_touchListener:null,
  ctor:function(){
    this._super();
    var touchListener = {
      event: cc.EventListener.TOUCH_ONE_BY_ONE,
      swallowTouches: true,
      onTouchBegan: this.onTouchBegan
    };
    cc.eventManager.addListener(touchListener, this);
    this.m_touchListener = touchListener;
  },
  onTouchBegan:function(touch, event) {
    var target = event.getCurrentTarget();
    if(!target.isVisible() || (!this.isTouchInside(target,touch))){
      return false;
    }
    return true;
  },
  isTouchInside: function (owner,touch) {
    if(!owner || !owner.getParent()){
      return false;
    }
    var touchLocation = touch.getLocation(); // Get the touch position
    touchLocation = owner.getParent().convertToNodeSpace(touchLocation);
    return cc.rectContainsPoint(owner.getBoundingBox(), touchLocation);
  }
});
这里要把swallowTouches设置为true,这样onTouchBegan返回true才能够吞噬触摸,不继续往优先级更低的层传递,从而实现遮挡层。
【cocos2d-js教程】cocos2d-js 遮挡层(禁止触摸事件传递层)的更多相关文章
- cocos2d-js 遮挡层(禁止触摸事件传递层)
		在游戏中,我们经常会碰到一些弹窗,这些弹窗禁止点透,也就是禁止触摸事件传递到底层,我们称之为遮挡层,这些遮挡层,需要开发遮挡层,我们首先得了解cocos2d-js的触摸传递机制,本文主要针对cocos ... 
- cocos2dx lua 吞噬层的触摸事件
		首先要创建一个layer,设置该层为可触摸 layer:setTouchEnabled(true) 注册触摸事件 local listener = cc.EventListenerTouchOneBy ... 
- cocos2d-x JS 弹出对话框触摸监听(吞噬点击事件遮挡层)
		在游戏中,我们经常会碰到一些弹窗,这些弹窗禁止点透,也就是禁止触摸事件传递到底层,我们称之为遮挡层,这些遮挡层,需要开发遮挡层,我们首先得了解cocos2d-js的触摸传递机制. 根据官方文档,我们可 ... 
- cocos2d-x3.x屏蔽遮罩层屏蔽触摸button
		cocos2d-x3.x触摸方法改变后,.屏蔽掉的层实际上触摸事件的非常easy,首先touchbegan一定要回true,第二,该事件被设定为听吞没触摸true.最近登录触摸水平必须低于0,现在,我 ... 
- riot.js教程【三】访问DOM元素、使用jquery、mount输入参数、riotjs标签的生命周期
		前文回顾 riot.js教程[二]组件撰写准则.预处理器.标签样式和装配方法 riot.js教程[一]简介 访问DOM元素 你可以通过this.refs对象访问dom元素 而且还有大量的属性简写方式可 ... 
- Javascript模块化工具require.js教程
		转自:http://www.w3cschool.cc/w3cnote/requirejs-tutorial-1.html, http://www.w3cschool.cc/w3cnote/requir ... 
- Vue.js教程  2.体验Vue
		Vue.js教程 2.体验Vue <!DOCTYPE html> <html lang="en"> <head> <meta charse ... 
- Node.js 教程 01 - 简介、安装及配置
		系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ... 
- Node.js 教程 04 - 模块系统
		前言: Node.js的模块系统类似于C/C++的文件引用,可以声明对象,也可以定义类 创建对象. 大家这么理解,就简单了. 定义: 为了让Node.js的文件可以相互调用,Node.js提供了一个简 ... 
随机推荐
- 为select2下拉框赋值
			$("#A").select2("val", value);$("#A").val('3232'); 
- npm 淘宝镜像安装以及安装报错window_nt 6.1.7601 解决
			http://www.cnblogs.com/ycxhandsome/p/6562980.html npm config set proxy null npm config set https-pro ... 
- SPOJ AMR11E Distinct Primes 基础数论
			Arithmancy is Draco Malfoy's favorite subject, but what spoils it for him is that Hermione Granger i ... 
- Jenkins Pulgin 安装
			1. 利用管理插件找到需要安装的插件. 2. 如果安装失败,查看缺少啥. 3. 手动去下载http://updates.jenkins-ci.org/download/plugins/ 4. 安装此插 ... 
- Centos 6 FTP 配置
			How to configure ftp server on centos 6 Posted krizna Centos FTP – File transfer protocol is used ... 
- 【poj1222-又一道开关问题】高斯消元求解异或方程组
			题意:给出一个5*6的图,每个灯泡有一个初始状态,1表示亮,0表示灭.每对一个灯泡操作时,会影响周围的灯泡改变亮灭,问如何操作可以使得所有灯泡都关掉. 题解: 这题和上一题几乎完全一样..就是要输出解 ... 
- 「6月雅礼集训 2017 Day10」perm(CodeForces 698F)
			[题目大意] 给出一个$n$个数的序列$\{a_n\}$,其中有些地方的数为0,要求你把这个序列填成一个1到$n$的排列,使得: $(a_i, a_j) = 1$,当且仅当$(i, j) = 1$.多 ... 
- 【BZOJ】1699 [Usaco2007 Jan]Balanced Lineup排队
			[算法]线段树 #include<cstdio> #include<cctype> #include<algorithm> using namespace std; ... 
- 【转载】VS2013安装需要IE10
			因为需要移动办公,需要给笔记本搭建编程环境.安装VS2013时遇到了小麻烦,提示我,需要安装IE10. 然后我很听话的按照提供的超链接,到了官网,下载了最新的IE11,然后安装,结果告诉我下载的IE版 ... 
- NightMare2(SCU4527+dijkstra+二分)
			题目链接:http://acm.scu.edu.cn/soj/problem.action?id=4527 题目: 题意:最短路的每条边除了边权之外还会有一个限制(财富,身上带的财富大于这个值则不能通 ... 
