cocos2d里面自带的多点触摸总结

  1. CCScene* HelloWorld::scene()
  2. {
  3.     // 'scene' is an autorelease object
  4.     CCScene *scene = CCScene::create();
  5.     
  6.     // 'layer' is an autorelease object
  7.     HelloWorld *layer = HelloWorld::create();

  8.     // add layer as a child to scene
  9.     scene->addChild(layer);

  10.     // return the scene
  11.     return scene;
  12. }

  13. // on "init" you need to initialize your instance
  14. bool HelloWorld::init()
  15. {
  16.     //
  17.     // 1. super init first
  18.     if ( !CCLayer::init() )
  19.     {
  20.         return false;
  21.     }
  22.     
  23. //    开启多点触摸监听务必调用此函数
  24.     setTouchEnabled(true);
  25.     
  26.     CCSprite * sp1 = CCSprite::create("Icon.png");
  27.     sp1->setColor(ccc3(255, 255, 0));//便于区分
  28.     sp1->setPosition(ccp(150,100));
  29.     addChild(sp1, 0 , 91);
  30.     
  31.     CCSprite *sp2 = CCSprite::create("Icon.png");
  32.     sp2->setPosition(ccp(150,200));
  33.     addChild(sp2,0 , 92);
  34.     return true;
  35. }


  36. //    重写多触摸点回调函数

  37. //注册多触点的委托监听
  38. void HelloWorld:: registerWithTouchDispatcher(void)
  39. {
  40.     CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);
  41.     
  42. }
  43. //用户手指第一次触摸
  44. void HelloWorld:: ccTouchesBegan(CCSet * pTouches,CCEvent * pEvent)
  45. {
  46.     CCSetIterator iter = pTouches->begin();
  47.     for (; iter!=pTouches->end(); iter++) {
  48.         CCTouch * pTouch = (CCTouch * )(* iter);
  49.         CCPoint location = pTouch->getLocation();
  50.         if (pTouch->getID() == 0) {
  51. //            第一个触点
  52.             CCSprite * sp1 = (CCSprite* )this->getChildByTag(91);
  53.             sp1->setPosition(location);
  54.         }else if (pTouch->getID()==1){
  55.             CCSprite * sp2 =  (CCSprite* )this->getChildByTag(92);
  56.             sp2->setPosition(location);
  57.         
  58.         }
  59.     }
  60. }

  61. //用户手指进行移动或者拖拽
  62. void HelloWorld:: ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent)
  63. {
  64.     CCSetIterator iter = pTouches->begin();
  65.     for (; iter!=pTouches->end(); iter++) {
  66.         CCTouch * pTouch = (CCTouch * )(* iter);
  67.         CCPoint location = pTouch->getLocation();
  68.         if (pTouch->getID() == 0) {
  69.             //            第一个触点
  70.             CCSprite * sp1 = (CCSprite* )this->getChildByTag(91);
  71.             sp1->setPosition(location);
  72.         }else if (pTouch->getID()==1){
  73.             CCSprite * sp2 =  (CCSprite* )this->getChildByTag(92);
  74.             sp2->setPosition(location);
  75.             
  76.         }
  77.     }
  78. }

  79. //用户手指拾起
  80. void HelloWorld:: ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent)
  81. {
  82.      CCSetIterator iter = pTouches->begin();
  83.     for (; iter!=pTouches->end(); iter++) {
  84.         CCTouch * pTouch=(CCTouch * )(* iter);
  85.         CCPoint loaction = pTouch->getLocation();
  86.         CCLog("pTouch 触摸点%i坐标:x=%f , y=%f",pTouch->getID(),loaction.x ,loaction.y);
  87.     }
  88. }
  89. //    生命周期函数
  90. void HelloWorld:: onExit()
  91. {
  92.     CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
  93.     CCLayer::onExit();
  94.     
  95. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值