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。

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

posted on 2015-12-07 22:50  四月厨  阅读(240)  评论(0编辑  收藏  举报