cocos2d-x触摸事件优先级的探究与实践
[版本:2.0]
CCTouchDispatcher是管理cocos2d-x中所有Touch事件派发的类,
CCTouchDispatcher中包含了两个CCTouchHandler的列表,分别存储StandardTouchHandler和 TargetedTouchHandler。
// default implements are used to call script callback if exist (单点)
virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);
// default implements are used to call script callback if exist (多点)
virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent);
virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent);
virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent);
virtual void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent);
void CCTouchDispatcher::addTargetedDelegate(CCTouchDelegate *pDelegate, int nPriority, bool bSwallowsTouches)
nPriority = 吞噬优先级(例:CCMenu权限为 -128 越小越权限高)
bSwallowsTouches = 击穿 (例:俩个layer时,bSwallowsTouches = true击穿,表示可以同时响应这俩个layer的ccTouchBegan)
true:本层的后续Touch事件可以被触发,并阻挡向后层传递
false:本层的后续Touch事件不能被触发,并向后传递
多点:优先级
1:addChild(CCNode *child, int zOrder) 以 zOrder 做标准
2:同等zOrder下 ,以添加前后顺序,越后越高