cocos2d-x 触摸原理

本文深入探讨了Cocos2d-x引擎中的触摸机制,重点介绍了触摸对象CCTouch的功能及其生命周期,并分析了CCDirector如何通过CCTouchDispatcher进行触摸事件的调度。此外,还解释了多点触摸的工作原理。
cocos2d-x 触摸原理
1. 触摸对象CCTouch理解
  static CCTouch* s_pTouches[CC_MAX_TOUCHES] = { NULL }; //(多点触摸) 存储5个触摸对象 当一个触摸点触摸到屏幕时,一个触摸对象生成,直到触摸点离开屏幕  这个触摸对象消失。
  这个对象的id值也存储在下面的字典中。


  static CCDictionary s_TouchesIntergerDict; //字典 可以搜索查看字典使用 添加 删除 查找


  理解这个触摸对象概念 即可   " 理解触摸滑动 多点触摸响应 ... "


2. 触摸原理分析
  CCDirector(导演)中存在 CCTouchDispatcher "触摸调度对象"(该对象负责整个游戏中所有层的触
  摸调度功能) 
  每一个"层"都继承CCTouchDelegate(一个触摸协议)当初始化一个层时设置是否有触摸逻辑,当有时,添加该层到CCDirector::CCTouchDispatcher 全局触摸调度中
  
  CCTouchDispatcher(触摸调度) 其实就是包含CCArray数据结构的类 包括单点触摸CCArray 多点触摸CCArray 。 
  存储的单元 是“触摸句柄(CCTouchHandler)”即包含 触摸层(CCTouchDelegate)及优先级(nPriority) 
  
  总结: 当一个触摸点击时,首先产生一个有标识id的"触摸对象"CCTouch 。然后进入 触摸调度(CCTouchDispatcher)中 在CCArray中根据优先级调用相应的触摸层。触摸点即传到该层中
  
3. 多点触摸的理解 ????
   多点触摸一直很怀疑最后传入 触摸层CCTouchDelegate中  ccTouchesBegan(CCSet *pTouches,
   CCEvent *pEvent)  CCSet 始终只有一个触摸对象 TouchesMove TouchesEnd 也一样


   
   
    pMutableTouches = (bNeedsMutableSet ? pTouches->mutableCopy() : pTouches);
   ----上面一句是如果是多触摸 就拷贝保存当前的触摸对象
   
   
   
  virtual void touchesBegan(CCSet* touches, CCEvent* pEvent);


  virtual void touchesBegan(CCSet* touches, CCEvent* pEvent) = 0;


  virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent) 
  
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值