cocos2d-x 3.0 触摸注册函数
发布时间:2020-12-14 16:39:35 所属栏目:百科 来源:网络整理
导读:cocos2d-x 3.0版本的事件分发的机制较之之前的版本进行了修改,把事件处理的逻辑分离出来,并通过不同的事件监听器来监听不同的事件。当一个节点收到了事件,就会指派一个事件分发器_eventDispatcher专门来分发这些事件。对于触摸来说,大概的过程就是我们先
cocos2d-x 3.0版本的事件分发的机制较之之前的版本进行了修改,把事件处理的逻辑分离出来,并通过不同的事件监听器来监听不同的事件。当一个节点收到了事件,就会指派一个事件分发器_eventDispatcher专门来分发这些事件。对于触摸来说,大概的过程就是我们先创建一个对应触摸事件的监听器,然后覆盖触摸事件的函数,并把它们绑定到监听器,然后可以设置一下这个监听器的属性,最后把监听器添加到分发器之中,系统就会自动进行触摸事件的处理。 //添加一个测试的精灵 autoonion = Sprite::create("onion.png"); onion->setPosition(Point(visibleSize.width/2,visibleSize.height/2)); onion->setScale(0.2); this->addChild(onion); //创建一个触摸监听器,这里使用单点触摸事件 autoTouchListenr = EventListenerTouchOneByOne::create(); //设置吞噬为true,不让触摸往下传递 TouchListenr->setSwallowTouches(true); //和回调函数绑定 TouchListenr->onTouchBegan= CC_CALLBACK_2(HelloWorld::onTouchBegan,this); TouchListenr->onTouchMoved= CC_CALLBACK_2(HelloWorld::onTouchMoved,this); TouchListenr->onTouchEnded= CC_CALLBACK_2(HelloWorld::onTouchEnded,this); //添加监听器到事件分发器中 _eventDispatcher->addEventListenerWithSceneGraphPriority(TouchListenr,onion); 下面我们覆盖单点触摸中提供的触摸函数: [cpp] view plaincopy bool HelloWorld::onTouchBegan(Touch* touch,Event* event) { //获取精灵对象并取得精灵的矩阵 autosprite = static_cast<Sprite*>(event->getCurrentTarget()); Rect rect = sprite->getBoundingBox(); //获取触摸点的坐标 Point point = touch->getLocation(); //判断触摸点是否在精灵的矩阵范围内 if(rect.containsPoint(point)) { return true; } return false; } void HelloWorld::onTouchMoved(Touch* touch,Event* event) { //获取精灵对象 autosprite = static_cast<Sprite*>(event->getCurrentTarget()); //改变精灵的位置 sprite->setPosition(sprite->getPosition()+ touch->getDelta()); } void HelloWorld::onTouchEnded(Touch* touch,Event* event) { CCLog("touch end!"); } 来自:http://www.taikr.com/article/424 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |