原作者:有缘人 来源:新浪微博 地址:http://blog.sina.com.cn/s/blog_6ac2c7260102vvdu.HTML
一、touch事件响应分为单点触摸响应和多点触摸响应。
单点触摸响应需要重载的方法:
virtual boolcctouchBegan(CCtouch *ptouch,CCEvent *pEvent);
virtual voIDcctouchmoved(CCtouch *ptouch,CCEvent *pEvent);
virtual voIDcctouchended(CCtouch *ptouch,CCEvent *pEvent);
virtual voIDcctouchCancelled(CCtouch *ptouch,CCEvent *pEvent);
多点触摸需要重载的方法:
virtual voIDcctouchesBegan(CCSet *ptouches,CCEvent *pEvent);
virtual voID cctouchesMoved(CCSet*ptouches,CCEvent *pEvent);
virtual voIDcctouchesEnded(CCSet *ptouches,CCEvent *pEvent);
virtual voIDcctouchesCancelled(CCSet *ptouches,CCEvent *pEvent);
二、单点触摸本质上需要调用的方法,即设置touch的代理
CCDirector::sharedDirector()->gettouchdispatcher()->addTargetedDelegate(this,-129,true);
多点触摸本质上需要调用的方法
CCDirector::sharedDirector()->gettouchdispatcher()->addStandardDelegate(this,-129);
所以,只要调用了以上方法,就可以实现触摸响应,就不再需要调用settouchEnabled(true);
三、settouchEnabled的方法实现
voID cclayer::settouchEnabled(bool enabled){ if (m_btouchEnabled != enabled) { m_btouchEnabled = enabled; if (m_bRunning) { if (enabled) { this->registerWithtouchdispatcher(); } else { // have problems? CCDirector::sharedDirector()->gettouchdispatcher()->removeDelegate(this); } } }}
这段代码最主要的一句this->registerWithtouchdispatcher();
这个方法中就是调用第二点中提到的两个delegate添加方法。
所以,咱们实现touch响应的话,需要重载 registerWithtouchdispatcher()方法,并在这个方法中添加实现
voID HelloWorld::registerWithtouchdispatcher(){ CCDirector::sharedDirector()->gettouchdispatcher()->addStandardDelegate(this,-129); //CDirector::sharedDirector()->gettouchdispatcher()->addTargetedDelegate(this,true);}
由此,实现touch事件响应需要做的 *** 作:
1.重载registerWithtouchdispatcher()并实现
2.settouchEnabled(true);
3.重载touch或者touches系列方法
四、在cclayer的registerWithtouchdispatcher()中有关于m_etouchMode的判断,并且有settouchMode()方法,参数有两种:kCCtouchesOneByOne和 kCCtouchesAllAtOnce,分别代表单点触摸和多点触摸
当touchMode为kCCtouchesOneByOne 时,调用的是addTargetedDelegate方法;当touchMode为kCCtouchesAllAtOnce时,调用的是addStandardDelegate方法
所以,“重载registerWithtouchdispatcher()并实现”可以由settouchMode()方法来替换
总结以上是内存溢出为你收集整理的cocos2d-x中关于touch事件的响应全部内容,希望文章能够帮你解决cocos2d-x中关于touch事件的响应所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)