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

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

    震惊

    震惊

编辑推荐
Cocos2dx与玩家之间的互动,很大一个情况是通过处理玩家的触摸事件来实现的。在移动应用就是触摸,
今天, 我们来学习cocos2dX里面的触摸事件与触摸事件合集, 现在的手机游戏交互基本上都是通过触摸交
1. 屏幕触摸事件 EventListenerTouchOneByOne :单点触控 std::function<bool(Touch*, Event*)&g
目标:想要精灵进行随机的移动。 过程:需要一个白色的背景,所以先来修改 HelloWorld 的继承,改成
在上一篇的基础上增加了一点内容,必要的注释都写在代码里了,,就直接贴代码吧,我也懒得写详细的
在上一篇的基础上增加了一点内容,必要的注释都写在代码里了,,就直接贴代码吧,我也懒得写详细的
转载请注明出处:http://blog.csdn.net/oyangyufu/article/details/25656673 效果图: CCTouch类装
触摸事件是游戏中必不可少的一部分,但是有时候我们不想使整个精灵都可以接受触摸响应的,所以我们
理解一个触摸事件可以从时间和空间两方面考虑。 1、触摸事件的时间方面 触摸事件的在时间方面,如下
理解一个触摸事件可以从时间和空间两方面考虑。 1、触摸事件的时间方面 触摸事件的在时间方面,如下
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号