cocos2dx 精灵添加接触事情ITeye - 乐橙lc8

cocos2dx 精灵添加接触事情ITeye

2019-01-13 17:39:37 | 作者: 辰良 | 标签: 接触,事情,精灵 | 浏览: 1105

 

   让精灵类承继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;
}

   

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表乐橙lc8立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章