项目场景:

creator 项目中,关于触摸,对于同一个node的监听触摸事件,有 时由于玩家的操作,在同一个节点,如果同时多个手指点击。

问题描述:

在同一个节点,如果同时多个手指点击,那么这时event的getTouches()方法是可以获取到多个点的,其结果是一个数组,touchStart和touchMove,touchEnd都一样。
有时我们想要屏蔽掉当点触摸。

解决方案:

对于creator,最简单的方法是,我们可以找到引擎的CCInputManager.js文件(Resources/engine/cocos2d/core/platform/CCInputManager.js),修改其_maxTouches为1即可。

除此之外,需要防止同一个节点的事件被多次响应,我们也可以通过touchid做区分。

touchingID:number = 0;onLoad(){this.node.on(cc.Node.EventType.TOUCH_START,this.onTouchEvt,this);this.node.on(cc.Node.EventType.TOUCH_END,this.onTouchEvt,this);
}onTouchEvt(evt:cc.Event.EventTouch){const touch = evt.touch;const tid = touch.getID();const touchingID = this.touchingID;if (evt.type === cc.Node.EventType.TOUCH_START){if(touchingID) return ;touchID = tid;}else{if (touchingID && touchingID !== tid) return ;}
}

这么如果点击时手指还没有被抬起时,节点再次被点击,那么第二次以及以后的点击事件时不会被触发事件的。
这里也可以简单实现下触摸手势

touchingID:number = 0;onLoad(){this.node.on(cc.Node.EventType.TOUCH_START,this.onTouchEvt,this);this.node.on(cc.Node.EventType.TOUCH_END,this.onTouchEvt,this);
}onTouchEvt(evt:cc.Event.EventTouch){const touch = evt.touch;const tid = touch.getID();const touchingID = this.touchingID;if (evt.type === cc.Node.EventType.TOUCH_START){if(touchingID) return ;touchID = tid;}else{if (touchingID && touchingID !== tid) return ;if (vec.mag() < 10){//这里限制一定的距离 太短我们认为是点击}else{const dir = this.getVecDir(vec);}this.touchingID = 0;}
}//get
getVecDir(vec:cc.Vec2):cc.Vec2{if(Math.abs(vec.x) > Math.abs(vec.y)){if (vec.x > 0){return cc.Vec2.RIGHT;}else{return cc.Vec2.RIGHT.negSelf();}}else{if (vec.y > 0 ){return cc.Vec2.UP;}else{return cc.Vec2.UP.negSelf();}}
}

creator多点触摸理解相关推荐

  1. android 关闭多点触控_Cocos Creator关闭多点触摸的问题

    一. 方案一:改写Node的派发事件 方法:改写node的派发事件,当有多个响应的时候不去进行dispatch. 在游戏开启的时候把node原来的方法: cc.Node.prototype.dispa ...

  2. WP7开发—Silverlight多点触摸事件详解【含Demo代码】

    最近在学习WP7的Silverlight编程,就把学习到知识点整理为日志,方便自己理解深刻点,也作为笔记和备忘,如有不合理或者错误之处,还恳请指正. WP7的支持多点触摸,有两种不同的编程模式: 1. ...

  3. Linux/Android多点触摸协议

    链接点击打开链接 关于Linux多点触摸协议大家可以参考kernel中的文档:https://www.kernel.org/doc/Documentation/input/multi-touch-pr ...

  4. 5.触摸touch,单点触摸,多点触摸,触摸优先和触摸事件的吞噬

     1 触摸 Coco2dx默认只有CCLayer及其派生类才有触摸的功能. 2 单点触摸 打开触摸开关和触摸方式 setTouchEnabled(true); setTouchMode(kCCTo ...

  5. 多点触摸画板(MultiTouchCanvas)

    这是个简单的支持多点触摸的画板控件, 绘制功能基于WPF InkCanvas,也是我drawTool系列文章的开篇. 阅读该文章后可能产生一些问题: 1. 如果对生成的笔迹对象进行控制 如果要对生成的 ...

  6. Android中的多点触摸

    我的学习视频地址,一起来学习Android- http://edu.csdn.net/course/detail/2741/43164?auto_start=1> 代码下载地址 代码一:自定义支 ...

  7. 基于Visual C 2010开发Windows7应用 多点触摸图片处理应用程序 1 同时处理多张图片

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! wind ...

  8. 基于Visual C#2010开发Windows7应用 多点触摸图片处理应用程序(1)-同时处理多张图片...

    windows7的触摸功能开辟了一个电脑的全新世纪.从此,您可以丢掉鼠标和键盘,直接用手在屏幕上玩游戏.用笔来写字编辑文档,聊天. windows7最重要特性之一就是:支持多点触摸.比尔盖茨说,不久, ...

  9. Linux/Android多点触摸协议【转】

    本文转载自: 链接点击打开链接 关于Linux多点触摸协议大家可以参考kernel中的文档:https://www.kernel.org/doc/Documentation/input/multi-t ...

  10. android怎么监听多点触摸_什么是多点触控技术,有哪些用途

    自从乔布斯将触控技术用于苹果手机上,很多的手机厂商纷纷效仿,触控技术几乎成为手机的"标配".其实,触控技术早就存在,只是一直未能大面积用于各种设备中,本文将带您认识神奇的触控技术. ...

最新文章

  1. Git叉子实际上是Git克隆吗?
  2. (SpringMVC)RestFul和Controller
  3. 为什么要划分物料组_SAP
  4. [Spark][Hive][Python][SQL]Spark 读取Hive表的小例子
  5. 解决 | 此数据库文件跟当前sql server实例不兼容 sql server2008无法连接到(local)...
  6. 【NOI2013】树的计数【树的遍历】【期望】
  7. Spring Boot Servlet
  8. 数据结构排序法之插入法
  9. Spring 的循环依赖:真的必须非要三级缓存吗?
  10. 【51项目】电子密码锁设计
  11. uView u-button修改样式
  12. iOS自动布局高级用法 纯代码约束写法
  13. z变换与拉普拉斯变换的关系
  14. imx6ull调试sx1268 lora调试记录
  15. SED替换字符串用法
  16. 【科普】当手机遭遇短信验证码轰炸,这几点尤其要注意
  17. FMI飞马网 | 人工智能/大数据/程序/语言/项目管理/机器学习/Python书籍免费赠书
  18. SSM | SpringMVC
  19. Udacity Sparkify项目
  20. python 作图:heatmap

热门文章

  1. linux ext4 格式化工具,ext4格式化软件 mkfs.ext4 快速格式化
  2. Django教程 —— 站点后台管理
  3. 蓝牙、Wifi与ZigBee无线传输技术中,谁比较占有优势
  4. windows聚焦壁纸不更新_win10系统聚焦壁纸不更新怎么办?
  5. Morketing Summit 2019“破·局”:有破有立,突破棋局 | MS2019灵眸·全球营销商业峰会全面启动!...
  6. 高端玩家分析 DNF大搬运后TOP10大工作引荐
  7. 计算机存储器由半导体,计算机存储器
  8. [洛谷P3376题解]网络流(最大流)的实现算法讲解与代码
  9. Android Property服务
  10. JavaFX scene切换