Cocos2d-x   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2d-x 3.0 触摸注册函数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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

大佬总结

以上是大佬教程为你收集整理的cocos2d-x 3.0 触摸注册函数全部内容,希望文章能够帮你解决cocos2d-x 3.0 触摸注册函数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。