【cocos2d-js教程】cocos2d-js 遮挡层(禁止触摸事件传递层)
2024-10-20 16:45:45
在游戏中,我们经常会碰到一些弹窗,这些弹窗禁止点透,也就是禁止触摸事件传递到底层,我们称之为遮挡层,这些遮挡层,需要开发遮挡层,我们首先得了解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才能够吞噬触摸,不继续往优先级更低的层传递,从而实现遮挡层。
最新文章
- Spark 官方文档(2)——集群模式
- CREATE TABLE 表名 AS SELECT 语句
- iframe使用方法
- 简单C程序生成的汇编代码分析
- PHP四种基础算法详解
- 夺命雷公狗---Thinkphp----12之文章的增删改查(图片上传和关联查询)
- Airbnb面试的27个奇葩问题,你 hold 住吗?
- 0bjective-c 之 NSString 使用详解
- [Learn Android Studio 汉化教程]第一章 : Android Studio 介绍
- Working XML: Processing instructions and parameters
- The Child and Toy
- 转: 理解AngularJS中的依赖注入
- ThinkPhp学习01
- Ubuntu16.04安装之后连不上无线网?有可能是Realtek rtl8822be的原因
- Hexo主题yilia增加gitalk评论插件
- ffmpeg 在ubuntu上编译环境搭建和开发
- Nginx + Tomcat搭建集群
- 17. Letter Combinations of a Phone Number (backtracking)
- 加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用
- Maven 仓库之阿里云镜像配置
热门文章
- HDU1114 背包
- MongoDB入门(4)- MongoDB日常操作
- Maven命令创建java项目
- 【Foreign】光 [莫比乌斯反演]
- Codeforces 321E Ciel and Gondolas
- 【BZOJ】1609: [Usaco2008 Feb]Eating Together麻烦的聚餐
- 超详细的Java面试题总结(一)之Java基础知识篇
- H5特性 MutationObserver 监听元素 动态改变iframe高度
- TCP的3次握手/4次握手
- 数据库===轻量级mysql数据库管理工具