一个单点触摸事件的完整流程。
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