cocos2d-x-3.x 触摸反馈(3)事件传递

一个单点触摸事件的完整流程。

 1 bool HelloWorld::init()
 2 {
 3     if ( !Layer::init())
 4     {
 5         return false;
 6     }
 7     Size size = Director::getInstance()->getVisibleSize();    //获取有效长度
 8     auto label = LabelTTF::create("Click me", "Courier", 30);    //输入文字
 9     label->setPosition(size.width / 2, size.height / 2);    //中央
10     addChild(label);    //加入图层
11     auto listener = EventListenerTouchOneByOne::create();    //创建事件监听器,C++11的特性
12     listener->onTouchBegan = [](Touch *t, Event *e){    //捕获变量
13
14         if (e->getCurrentTarget()->getBoundingBox().containsPoint(t->getLocation())){//获取事件目标,获取边界区域,获取触摸点
15             log("onTouchBegan");    //反馈输出
16         }
17         return true;    //注意这里改了,如果为false以下的两个事件不会触发
18     };
19     listener->onTouchMoved = [](Touch* t, Event *e){//新建监听,移动触发
20         log("onTouchMoved");
21     };
22     listener->onTouchEnded = [](Touch* t, Event *e){ //新建监听,触摸结束触发
23         log("onTouchEnd");
24     };
25         Director::getInstance()->getEventDispatcher()->
26         addEventListenerWithSceneGraphPriority(listener, label);
27     return true;
28 }

这个的运行效果就是,点击目标输出begin,抬起鼠标输出end,在屏幕上上滑动出现一连串的moved。

基本上一套小完整的单点触摸反馈机制。

时间: 2024-10-13 00:29:32

cocos2d-x-3.x 触摸反馈(3)事件传递的相关文章

cocos2d-x-3.x 触摸反馈(1)单点触摸

单点触摸就是在同一时间只支持一个点的触摸反馈. 1 bool HelloWorld::init() 2 { 3 if ( !Layer::init()) 4 { 5 return false; 6 } 7 Size size = Director::getInstance()->getVisibleSize(); //获取有效长度 8 auto label = LabelTTF::create("Click me", "Courier", 30); //输入文

js实现Mac触摸板双指事件(上/下/左/右/放大/缩小)

前言 这几天在修复一个web问题时,需要捕获Mac触摸板双指事件(上.下.左.右.放大.缩小),但发现并没有现成的轮子,还是要自己造. 例如:jquery.mousewheel.js(添加跨浏览器的鼠标滚轮支持), 给得太简单,没有处理Mac双指行为,所以不能用. 目标 获取Mac触摸板双指行为,具体有两个,一个是实时拖动路线,二是手势(上.下.左.右.放大.缩小). 难点 双指行为只会触发mousewheel事件,其他什么的touch,mouse都不会触发,只能从这个下手. 双指特性 1.在快

Android ViewGroup 触摸事件传递机制

引言 上一篇博客我们学习了Android View 触摸事件传递机制,不了解的同学可以查看Android View 触摸事件传递机制.今天继续学习Android触摸事件传递机制,这篇博客将和大家一起探讨ViewGroup的触摸事件传递机制. 示例 示例代码如下: public class MainActivity extends ActionBarActivity { private String TAG = "MainActivity"; private MyViewGroup pa

Android View 触摸事件传递机制

PS:以现在的眼光看以前写的博客感觉写的很烂,或许或一段时间再看现在的博客会有同样的感觉.所以每时每刻都去学习,去发现和理解新的东西. 引言 由于之前写的一篇关于Android事件传递顺序的博客质量太差,可能是理解不到位的原因,故最近又花了许多时间再次去看Android源码,看完之后有了新的理解,所以打算重新整理这篇博客.理解Android触摸事件传递机制有助于日后的开发以及自定义一些手势效果等.注意:这篇博客是基于Android2.0源码来分析的,不管老版本还是新版本的Android,其内部触

Android 控件的触摸事件传递与处理

了解Android控件的触摸事件传递与处理对我们日常开发中自定义控件和触摸事件冲突解决有重大意义.Android控件的触摸事件传递和处理主要有以下几个方法,下面一一介绍. 一.与触摸事件有关的几个方法 boolean dispatchTouchEvent(MotionEvent ev);                                                                                               接收到触摸事件时,是否

触摸事件传递与响应者链条

触摸事件传递 •发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中 •UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口(keyWindow) •主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件,这也是整个事件处理过程的第一步 •触摸事件的传递是从父控件传递到子控件,如果父控件不能接收触摸事件,那么子控件就不可能接收到触摸事件 响应者链条 1.如果view的控制器存在,就传递给控制器:

Android好奇宝宝_08_乱侃触摸事件传递

讲解触摸事件传递原理的网上有一大把,有从源码角度讲的,有从实际例子角度讲的.我这里呢只是记录下自己的理解,讲的可能没其他大牛透彻,有错误的跪求评论指正. 直接上图,对照图解和文字来分析触摸事件的传递. (1)乱七八糟图解版: (2)看图说话: (2.1)上图并不包含Activity,Activity没有onInterceptTouchEvent方法,默认实现都是直接往下传递. (2.2)讲解3个触摸事件控制方法的含义及其返回值的意义: <1>onInterceptTouchEvent onIn

iOS 和 Android 触摸事件传递

先看2篇文章,写得很好,都是咱们博客园的博文 ios 触摸事件传递 http://www.cnblogs.com/Quains/p/3369132.html android 触摸事件传递 http://www.cnblogs.com/superlcr/p/3946034.html 读完这2篇文章,可以发现ios和android对触摸事件的处理的大体思路是一致的,都是从根view开始,遍历检测子view,找到适合的view触发具体事件.2个平台都具备分发触摸事件,拦截触摸事件传递的机能. 下面盗用

JavaScript触摸与手势事件

处理Touch事件能让你跟踪用户的每一根手指的位置.你可以绑定以下四种Touch事件: 1.touchstart:  // 手指放到屏幕上的时候触发 2.touchmove:  // 手指在屏幕上移动的时候触发 3.touchend:  // 手指从屏幕上拿起的时候触发 4touchcancel:  // 系统取消touch事件的时候触发.至于系统什么时候会取消,不详 属性 1.client / clientY:// 触摸点相对于浏览器窗口viewport的位置 2.pageX / pageY: