当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

cocos2dx 精灵增加触摸事件

发表于: 2014-08-14   作者:墙头上一根草   来源:转载   浏览:
摘要:   cocos2dx  给精灵实现一个触摸事件方法:      让精灵类继承CCsprite和CCTargetedTouchDelegate两个类,然后实现CCTargetedTouchDelegate的几个虚函数如下:      virtual bool ccTouchBegan(CCTouch *pTouc

  cocos2dx  给精灵实现一个触摸事件方法:

 

   让精灵类继承CCsprite和CCTargetedTouchDelegate两个类,然后实现CCTargetedTouchDelegate的几个虚函数如下:

 

   virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
 
     // optional
    virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);
    virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);

  

    给精灵增加触摸事件的方式:

     1.在精灵类初始化的时候调用

     2.在进入场景的时候调用,如果在进入场景的时候调用,则需要精灵类需要实现两外的两个方法

         virtual void onEnter();//进入时注册
         virtual void onExit();//出场景时删除

 

    注册方法:

        void SelfCard::onEnter()
        {
            CCLog("sprite enter scene");
            CCSprite::onEnter();
            CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,-127,true);

            //这一步是关键
        }

      

        现在问题来了 通过以上方法加入到触摸事件的时候,不知道是不是全局的触摸事件,只要触摸然后精灵类就有会有反应,按我的理解就是我在精灵类上注册了触摸事件,那我触摸这个精灵的时候,才会有触摸相应的,但是实际中不是,所以我的理解就是   CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,-127,true);

  这个方法是所有的触摸事件的集合,只要有触摸的事件,就会相应所有被注册的事件,所以在每个触摸的事件里面自己要单独处理有没有被触摸到:

 

   /*触摸开始*/

   bool SelfCard::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){

    CCPoint point=pTouch->getLocation();

    if(!isTouch(point))
        return false;

    CCSprite *prite = CCSprite::create("dong.png");

    prite->setPosition(ccp(this->getPositionX(),this->getPositionY()+50));

    this->getParent()->addChild(prite,0,1001);
    this->setVisible(false);
    return true;
}

/*判断是否被触摸到*/

bool SelfCard::isTouch(CCPoint point)
{
    CCPoint nodePoint=this->convertToNodeSpace(point);
    CCSize size=this->getContentSize();

    if(nodePoint.x>size.width ||nodePoint.x<0 ||nodePoint.y>size.height ||nodePoint.y<0 )
        return false;

    return true;
}

   

 

cocos2dx 精灵增加触摸事件

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号