关于Cocos2dx 3.6 触摸事件 中 setSwallowTouches 的疑惑

假设Layer1的ZOrder大于Layer2的ZOder,则

Layer1和Layer2的触摸事件回调函数调用情况如下

Layer1 setSwallow:          false     false      true     true
Layer1 touchBegan ret:    false     true     false      true

--------------------------------------------------------------
Layer1 touchMoved         no          yes      no          yes
Layer2 touchBegan          yes          yes      yes      no

总结:
只有Layer1的touchBegan返回true时才会执行Layer1的touchMove事件是
只有当Layer1的swallow为true并且Layer1的toucheBegan返回true时Layer2的touchBegan才不会执行。

时间: 2024-10-17 03:13:08

关于Cocos2dx 3.6 触摸事件 中 setSwallowTouches 的疑惑的相关文章

触摸事件中touchstar、touchmove、touchend、touchcancel事件应用方法及实例

一. 分享到: 前面我们介绍过移动设备中一些设备事件,例如手机旋转90度.倾斜等设置放置姿态变化的四大事件orientationchange事件.MozOrientation事件.deviceorientation事件.devicemotion事件,接下由南昌网站建设公司百恒网络前端开发工程师向大介绍在移动端的触摸事件.       iOS版 Safari为了向开发人员传达一些特殊信息,新增了一些专有事件.因为 iOS设备既没有鼠标 也没有键盘,所以在为移动 Safari开发交互性网页时,常规的

cocos2dx 3.x 触摸事件

单点触摸: bool onTouchBegan(cocos2d::Touch *pTouch, cocos2d::Event *pEvent); void onTouchMoved(cocos2d::Touch *pTouch, cocos2d::Event *pEvent); void onTouchEnded(cocos2d::Touch *pTouch, cocos2d::Event *pEvent); 多点触摸: void onTouchesBegan(const std::vector

cocos2d-x 3.x 触摸事件

HelloWorldScene.h bool touchBegan(cocos2d::Touch*touch, cocos2d::Event*event);//触摸开始,返回bool类型 void touchMoved(cocos2d::Touch*touch, cocos2d::Event*event); void touchEnded(cocos2d::Touch*touch, cocos2d::Event*event); void touchCancelled(cocos2d::Touch

cocos2d-x之多点触摸事件

1 //全部所有的触摸点一起触发 2 auto listener = EventListenerTouchAllAtOnce::create(); 3 4 listener->onTouchesBegan = [](std::vector<Touch*> ts, Event *e){ 5 log("onTouchesBegan"); 6 }; 7 8 //获得触摸点的数量 9 listener->onTouchesMoved = [](std::vector&l

触摸事件的setSwallowTouches()方法

1 _touchListener->setSwallowTouches(true); 2 3 // true不向下触摸,简单点来说, 4 // 比如有两个sprite ,A和 B,A在上B在下(位置重叠), 5 // 触摸A的时候,B不会受到影响, 6 // 反之false,向下传递触摸,触摸A也等于触摸了B

cocos2dX 事件之触摸事件和触摸事件集合

今天, 我们来学习cocos2dX里面的触摸事件与触摸事件合集, 现在的手机游戏交互基本上都是通过触摸交互的, 所以大家明白这节的重要性了吧, 本节篇幅比较大, 所以我就不扯闲话了 先来看看常用函数: 触摸事件: addTargeteDelegate( 谁使用, 优先级, 是否拦截触摸消息); //注册单点触摸 virtual bool ccTouchBegan(CCTouch * touch,CCEvent * event); //触摸开始 virtual void ccTouchMoved(

touch事件中的touches、targetTouches和changedTouches详解

touches: 当前屏幕上所有触摸点的列表; targetTouches: 当前对象上所有触摸点的列表; changedTouches: 涉及当前(引发)事件的触摸点的列表 通过一个例子来区分一下触摸事件中的这三个属性: 1. 用一个手指接触屏幕,触发事件,此时这三个属性有相同的值. 2. 用第二个手指接触屏幕,此时,touches有两个元素,每个手指触摸点为一个值.当两个手指触摸相同元素时, targetTouches和touches的值相同,否则targetTouches 只有一个值.ch

iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控

-- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事件(手势操作).运动事件.远程控制事件等展开学习: iOS事件简介 触摸事件 手势识别 运动事件 远程控制事件 iOS事件 在iOS中事件分为三类: 触摸事件:通过触摸.手势进行触发(例如手指点击.缩放) 运动事件:通过加速器进行触发(例如手机晃动) 远程控制事件:通过其他远程设备触发(例如耳机控制

2.0 触摸事件

UIView不接收触摸事件的三种情况: 1.不接收用户交互 userInteractionEnabled = NO 2.隐藏 hidden = YES 3.透明 alpha = 0.0 ~ 0.01 4. 如果子视图的位置超出了父视图的有效范围, 那么子视图也是无法与用户交互的, 即使设置了父视图的 clipsToBounds = NO, 可以看懂, 但是也是无法与用户交互的 提示:UIImageView的userInteractionEnabled默认就是NO,因此UIImageView以及它