加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读