多點觸摸的實現步驟與單點觸摸類似,setTouchEnabled(true)開啟觸摸功能,註冊觸摸事件,重載多點觸摸函數:ccTouchesBegan(開始)、ccTouchesMoved(移動)、ccTouchesEnded(結束)、ccTouchesCancelled(系統中斷取消觸摸事件),每個多點觸摸函數都可以通過遍曆整個CCSet來獲得所有的觸點。
程式碼:
標頭檔加入觸摸重載函數:
virtual void registerWithTouchDispatcher(void);virtual void ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);virtual void ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);virtual void ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);virtual void ccTouchesCancelled(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
cpp檔案加入:
setTouchEnabled(true);
定義實現這些函數:
void HelloWorld::registerWithTouchDispatcher(){CCDirector *pdir = CCDirector::sharedDirector();pdir->getTouchDispatcher()->addStandardDelegate(this, 0);}void HelloWorld::ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent){CCSetIterator iter = pTouches->begin();for (; iter != pTouches->end(); iter++){CCTouch* pTouch = (CCTouch*)(*iter);CCPoint location = pTouch->getLocation();CCLOG("ccTouchesBegan x: %f, y: %f", location.x, location.y);}}void HelloWorld::ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent){CCSetIterator iter = pTouches->begin();for (; iter != pTouches->end(); iter++){CCTouch* pTouch = (CCTouch*)(*iter);CCPoint location = pTouch->getLocation();CCLOG("ccTouchesEnded x: %f, y: %f", location.x, location.y);}}void HelloWorld::ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent){CCSetIterator iter = pTouches->begin();for (; iter != pTouches->end(); iter++){CCTouch* pTouch = (CCTouch*)(*iter);CCPoint location = pTouch->getLocation();CCLOG("ccTouchesMoved x: %f, y: %f", location.x, location.y);}}void HelloWorld::ccTouchesCancelled(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent){CCSetIterator iter = pTouches->begin();for (; iter != pTouches->end(); iter++){CCTouch* pTouch = (CCTouch*)(*iter);CCPoint location = pTouch->getLocation();CCLOG("x: %f, y: %f", location.x, location.y);}}